flutter - 将数据从一个小部件传递到另一个小部件
问题描述
我有一个选择小部件列表,并希望将选定的选择传递给另一个小部件。这是选择小部件的列表
class ChoiceChipWidget extends StatefulWidget {
final List<String> reportList;
final Function(String item) onChoiceSelected;
ChoiceChipWidget(this.reportList, this.onChoiceSelected);
@override
_ChoiceChipWidgetState createState() => new _ChoiceChipWidgetState();
}
class _ChoiceChipWidgetState extends State<ChoiceChipWidget> {
String selectedChoice = "";
_buildChoiceList() {
List<Widget> choices = List();
widget.reportList.forEach((item) {
choices.add(Container(
child: ChoiceChip(
label: Text(item),
selected: selectedChoice == item,
onSelected: (selected) {
setState(() {
selectedChoice = item;
widget.onChoiceSelected(item);
print(selectedChoice); //DATA THAT NEEDS TO BE PASSED
});
},
),
));
});
return choices;
}
@override
Widget build(BuildContext context) {
return Wrap(
children: _buildChoiceList(),
);
}
}
我需要将它传递给这个小部件
class AddCashPage extends StatefulWidget {
@override
_AddCashPageState createState() => _AddCashPageState();
}
class _AddCashPageState extends State<AddCashPage> {
void createTodo() async {
if (_formKey.currentState.validate()) {
_formKey.currentState.save();
String repetition = //DATA NEEDS TO GO HERE;
final addCash = AddCash(repetition);
setState(() {
id = addCash.id;
});
}
}
@override
Widget build(BuildContext context) {
return Container(
child: Form(
key: _formKey,
child: Column(
children: <Widget>[
Row(
children: <Widget>[
ChoiceChipWidget(chipList, (item) {
selectedItem = item;
}),
],
),
RaisedButton(
child: Text("Update Cash Flow"),
onPressed: createTodo,
),
],
),
),
);
}
}
我试着AddCashPage
像这样在里面制作一个构造函数
class AddCashPage extends StatefulWidget {
final ChoiceChipWidget choiceChipWidget;
AddCashPage({Key key, @required this.choiceChipWidget}) : super(key: key);
@override
_AddCashPageState createState() => _AddCashPageState();
}
解决方案
我想你只是错过了在这里调用 setState() :
ChoiceChipWidget(chipList, (item) {
selectedItem = item;
}),
像这样:
ChoiceChipWidget(chipList, (item) {
setState(() => selectedItem = item);
}),
然后你可以这样做:
AddCash(selectedItem)
确保在selectedItem
里面声明变量_AddCashPageState
,我在你的代码上看不到它。
推荐阅读
- python - 流利的 Python 示例 2.11
- python - 在火花中展平 XML 数据框
- indexing - pytorch中等效的tensorflow matrix_band_part函数
- makefile - Linux make 命令
- python-2.7 - Python数据框舍入问题
- azure-data-factory-2 - 来自参数的 Azure 数据工厂源数据集值
- java - java.lang.AssertionError:手动构建插件时,类 hudson.plugins.jacoco.JacocoPublisher 缺少其描述符
- c++ - C++ 数字计算器模拟器
- javascript - 为什么单击登录后我的微调器不会出现?
- azure-data-explorer - 我可以在 Kusto 用户定义的函数中使用表格参数吗