Flutter Redux:Typedef vs ViewModel属性

时间:2018-09-17 14:15:42

标签: flutter flutter-redux

我对flutter_redux有疑问。

我已经看到有两种方法可以通过StoreConnector将函数传递给表示组件:

  • typedef
  • 作为viewmodel属性

这两段代码之间有什么区别?

片段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,            
        );
      },
    );
  }
}

1 个答案:

答案 0 :(得分:0)

使用ViewModel可使您从converter中穿过多个对象。