对话框中的Flatter Redux下拉按钮
在Flatter_redux中,如何使用StoreConnector在对话框中创建下拉按钮 我在一个有状态的小部件中有一个对话框,这样当DropdownButton更改时,它会再次得到更新和渲染 切换到Redux时,我创建了两个StoreConnector,一个用于选定的值,一个用于对话框中的Flatter Redux下拉按钮,redux,flutter,Redux,Flutter,在Flatter_redux中,如何使用StoreConnector在对话框中创建下拉按钮 我在一个有状态的小部件中有一个对话框,这样当DropdownButton更改时,它会再次得到更新和渲染 切换到Redux时,我创建了两个StoreConnector,一个用于选定的值,一个用于状态。dispatch回调 我必须将此代码添加到生成器中: if(_selectedId == null) { _selectedId = size; } 如果没有,则下拉列表不会更改,因为它始终具有redux
状态。dispatch
回调
我必须将此代码添加到生成器中:
if(_selectedId == null) {
_selectedId = size;
}
如果没有,则下拉列表不会更改,因为它始终具有redux state值,或者redux state值即使在下拉列表中也不会显示
Widget build(BuildContext context) {
return SimpleDialog(
title: new Text("User Settings"),
children: <Widget>[
// Redux store connector, to listen on state.size only, not entire state
StoreConnector<AppState, dynamic>(
converter: (store) => store.state.size,
builder: (context, size) {
if(_selectedId == null) {
_selectedId = size;
}
print("prior to container: ${_selectedId}");
return new Container(
padding: const EdgeInsets.all(10.0),
child: new DropdownButton<String>(
hint: const Text("Select your size"),
value: _selectedId,
onChanged: (String changedValue) {
// this sets State for the parent widget, the dialog, so the
// dropdown runs it's render. It has nothing to do with
// redux, only updating the dropdown value
setState(() {
_selectedId = changedValue;
print(changedValue);
print(_selectedId);
});
},
items: _sizes,
)
);
} // builder
),
// need a second store connector, for dispatch ChangeSize action
StoreConnector<AppState, dynamic>(
converter: (store) {
return (size) => store.dispatch(ChangeSize(_selectedId));
},
builder: (context, callback) {
return new SimpleDialogOption(
onPressed: () {
// StoreConnector callback
callback(_selectedId);
// close dialog
Navigator.pop(context);
},
child: const Text('Close'),
);
} // builder
)
],
);
} //widget build
小部件构建(构建上下文){
返回SimpleDialog(
标题:新文本(“用户设置”),
儿童:[
//Redux存储连接器,用于侦听state.size,而不是整个state
StoreConnector(
转换器:(存储)=>store.state.size,
生成器:(上下文、大小){
如果(_selectedId==null){
_选择edid=大小;
}
打印(“容器之前:${u selectedId}”);
退回新货柜(
填充:常数边集全部(10.0),
孩子:新的下拉按钮(
提示:常量文本(“选择您的大小”),
值:_selectedId,
onChanged:(字符串changedValue){
//这将设置父窗口小部件、对话框的状态,以便
//下拉菜单运行它的渲染。它与
//redux,仅更新下拉列表值
设置状态(){
_选择edid=changedValue;
打印(更改值);
打印(_selectedId);
});
},
项目:_尺寸,
)
);
}//建筑商
),
//需要第二个存储连接器,用于dispatch ChangeSize操作
StoreConnector(
转换器:(存储){
return(size)=>store.dispatch(ChangeSize(_selectedId));
},
生成器:(上下文,回调){
返回新的SimpleDialogOption(
已按下:(){
//StoreConnector回调
回调(_selectedId);
//关闭对话框
Navigator.pop(上下文);
},
子项:const Text('Close'),
);
}//建筑商
)
],
);
}//小部件构建