Flutter redux: typedef против свойства viewmodel - PullRequest
0 голосов
/ 17 сентября 2018

У меня вопрос по поводу 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,            
        );
      },
    );
  }
}
...