dart - 颤振访问可重用的小部件数据
问题描述
我刚开始学习颤振和一些让我困惑的东西,如下图所示,我创建了一个可重复使用的小部件 - 一行包含 2 个下拉菜单,分别是月份和年份。当我在另一个小部件中导入并使用它时,我不知道如何从可重复使用的小部件中访问选定的月份和选定的年份。
class MonthYearPicker extends StatefulWidget {
@override
_MonthYearPickerState createState() => _MonthYearPickerState();
}
class _MonthYearPickerState extends State<MonthYearPicker> {
List<DropdownMenuItem> monthList = const [
DropdownMenuItem(child: Text('January'), value: 1),
DropdownMenuItem(child: Text('February'), value: 2)
];
final List<DropdownMenuItem> yearList = [
DropdownMenuItem(child: Text((DateTime.now().year - 2).toString()), value: -2),
DropdownMenuItem(child: Text((DateTime.now().year).toString()), value: 0),
];
int _selectedMonth;
int _selectedYear;
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
DropdownButton(
items: monthList,
value: _selectedMonth,
hint: Text('---Month---'),
onChanged: (value) {
_selectedMonth = value;
setState(() {});
},
),
DropdownButton(
items: yearList,
value: _selectedYear,
hint: Text('---Year---'),
onChanged: (value) {
_selectedYear = value;
setState(() {});
},
),
],
);
}
}
下面的代码是我如何从另一个 .dart 文件导入和使用小部件
body: Column(
children: <Widget>[
MonthYearPicker(),
Center(
child: RaisedButton(
child: Text('Get Date'),
onPressed: () {
//How to access selected month and year from MonthYearPicker?
},
),
)
],
解决方案
也许您可以使用调用 Change 方法的回调,例如
MonthYearPicker((picked){
setState((){_pickedMonth = picked});
}
所以在 onChanged 里面
onChanged: handlePickedMonth;
推荐阅读
- javascript - Render a vue property
- reflection - 材料属性数据库 (BRDF)
- javascript - Javascript 在 Firefox 中打开重复的选项卡
- amazon-dynamodb - 如何使用 AWS Amplify 回填新的 AppSync 字段
- angular - 有没有办法在不使用 FileSaver 或 createObjectURL() 的情况下将 API 流保存为 .csv
- javascript - 鼠标进入/离开时如何在vue-video-player中播放和暂停视频?
- python - 使用 openpyxl 平均来自多个工作簿的单元格的值
- html - 将图像从 xml 调用到 html
- javascript - 为什么 JavaScript 日期总是迟到 2 小时?
- spring - Spring 和 Kafka 流 - 如何使用查询 API