In my Flutter app I use GetxController as a viewModel for every view:
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'track_activity_view_model.dart';
// Main widget of the view
class TrackActivityView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetBuilder<TrackActivityViewModel>(
init: TrackActivityViewModel(),
builder: (viewModel) {
return SafeArea(
child: Scaffold(
appBar: AppBar(title: Text('Registra un\'attività ')),
body: viewModel.serviceEnabled
? AskPermissionWidget()
: TrackingWidget(viewModel),
));
});
}
}
class AskPermissionWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetBuilder<TrackActivityViewModel>(
init: TrackActivityViewModel(),
builder: (viewModel) {
// Some code that use viewModel
return Container();
});
}
}
class TrackingWidget extends StatelessWidget {
final TrackActivityViewModel viewModel;
TrackingWidget(this.viewModel);
@override
Widget build(BuildContext context) {
// Some code that use viewModel
return Container();
}
}
When I write some nested widget, I'm wondering if is it better
- Call the controller ex-novo (AskPermissionWidget)
or
- Pass the controller as a parameter (TrackingWidget)
Are there any differences?
Thank-you very much.