gpt4 book ai didi

dart - Dart 和 Flutter 中具有强类型属性的匿名对象

转载 作者:IT王子 更新时间:2023-10-29 07:11:35 25 4
gpt4 key购买 nike

我在我的 Dart 中使用以下代码,它使用 redux 和 flutter_redux 包。一切正常,但如您所见,我必须使用以下语法来调用适当的操作。

callback['onIncrement'](34) 

它有效,但它很丑。我怎样才能改进它,让它看起来更像这样:

callback.onIncrement(34)

代码如下:

StoreConnector<AppState,Map<String,Function>>(
converter: (store) {
return {
'onIncrement': (value) => store.dispatch(IncrementAction(value)),
'onDecrement': () => store.dispatch(Actions.decrement)
};
},
builder: (context, callback) {
return Column(
children: <Widget>[
FlatButton(
child: Text('Increment Counter', style: TextStyle(color: Colors.white)),
color: Colors.orange,
onPressed: () => callback['onIncrement'](1)

更新:

现在,我正在使用枚举,它稍微好一点:

StoreConnector<AppState,Map<Actions,Function>>(
converter: (store) {
return {
Actions.increment: (value) => store.dispatch(IncrementAction(value)),
Actions.decrement: () => store.dispatch(Actions.decrement)
};
},
builder: (context, callback) {
return Column(
children: <Widget>[
FlatButton(
child: Text('Increment Counter', style: TextStyle(color: Colors.white)),
color: Colors.orange,
onPressed: () => callback[Actions.increment](23)

最佳答案

据我所知,在 Dart 中不可能这样做。您应该使用 ViewModel 代替:

StoreConnector<AppState, ViewModel>(
converter: ViewModel.fromStore,
builder: (context, viewModel) {
return FlatButton(
onPressed: () => viewModel.onIncrement(1),
...
);
},
}

...

class ViewModel {
final void Function(int) onIncrement;
final void Function(int) onDecrement;

ViewModel({@required this.onIncrement, @required this.onDecrement});

factory ViewModel.fromStore(Store store) {
return ViewModel(
onIncrement: (value) => store.dispatch(IncrementAction(value)),
onDecrement: (value) => store.dispatch(DecrementAction(value)),
);
}
}

关于dart - Dart 和 Flutter 中具有强类型属性的匿名对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56225683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com