首页 > 解决方案 > 颤振访问可重用的小部件数据

问题描述

我刚开始学习颤振和一些让我困惑的东西,如下图所示,我创建了一个可重复使用的小部件 - 一行包含 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?
                },
          ),
        )
          ],

可重复使用的下拉按钮行

在另一个文件中导入和使用

标签: dartflutter

解决方案


也许您可以使用调用 Change 方法的回调,例如

MonthYearPicker((picked){
 setState((){_pickedMonth = picked});
}

所以在 onChanged 里面

onChanged: handlePickedMonth;

推荐阅读