У меня вопрос по поводу flutter_redux
.
Я видел, что есть два способа передачи функции в компонент представления с помощью StoreConnector
:
- с помощью
typedef
- как свойство модели представления
Какая разница, если есть, между этими двумя частями кода?
Часть 1:
class ExampleContainer extends StatelessWidget {
ExampleContainer({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return StoreConnector<AppState, _ViewModel>(
converter: _ViewModel.fromStore,
builder: (context, vm) {
return ExampleScreen(
exampleAction: vm.exampleAction,
);
},
);
}
}
class _ViewModel {
final Function() exampleAction;
_ViewModel({this.exampleAction});
static _ViewModel fromStore(Store<AppState> store) {
return _ViewModel(exampleAction: () {
store.dispatch(ExampleAction());
}
);
}
}
Часть 2:
typedef ExampleCallback = Function();
class ExampleContainer extends StatelessWidget {
ExampleContainer({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return StoreConnector<AppState, ExampleCallback>(
converter: (Store<AppState> store) {
return () {
store.dispatch(ExampleAction());
};
},
builder: (BuildContext context, ExampleCallback exampleCallback) {
return ExampleScreen(
exampleAction: exampleCallback,
);
},
);
}
}