【问题标题】:Flutter - How can I access current selected item in DropDown from other widget?Flutter - 如何从其他小部件访问 DropDown 中的当前选定项目?
【发布时间】:2020-08-02 20:30:15
【问题描述】:

我的代码中有一个 DropDown。我需要以某种方式从其他小部件访问我当前选择的项目。 如何在其他小部件中访问此项目?我可以使用 GlobalKey 或构造函数或其他任何东西吗?

我的下拉代码:

              DropdownButton<String>(
                    items: _myList.map((String dropDownStringItem) {
                      return DropdownMenuItem<String>(
                        value: dropDownStringItem,
                        child: Text(dropDownStringItem),
                      );
                    }).toList(),
                    onChanged: (String newItemSelected) {
                      setState(() {
                        currentItemSelected = newItemSelected;
                      });
                    },
                    value: currentItemSelected,
                  ),

【问题讨论】:

  • 您只需将 currentItemSelected 值传递给您想要的小部件。您可以简单地使用构造函数或传递路由参数(如果您使用命名路由)。全局密钥也可以使用,但对于您可能想要传输的单个信息来说,这可能是一种过度杀伤力。但是,如果您愿意更改其他小部件中的值,则可能应该使用全局键。
  • 如何在下拉菜单中使用构造函数?如果我这样做:onChanged: (String newItemSelected) {SecondWidget(currentItemSelected);} 并在 SecondWidget 或课程中设置构造函数...我得到 null 值。我怎样才能正确设置这个构造函数?
  • 您能否发布包含此下拉列表的类的代码,并解释一下您希望在选择新项目时发生什么?这样解释起来会更容易。
  • Here is my full code 如果我在 DropDown 中选择一个项目,它应该将该项目传递给我的 Button 小部件。当我按下按钮时,它应该将文本字段的文本设置为所选项目。或者打印那个项目......我只需要以某种方式将它传递给其他班级......

标签: android ios flutter dart flutter-layout


【解决方案1】:

在您的代码中,您在函数中创建了一个按钮,但没有将其安装在小部件树中。请参阅我的示例代码,我使用一列来放置下拉列表和一个按钮。每当我对下拉列表进行更改时,currentItemSelected 都会更改,按钮文本也会更改。在按钮的 onPressed 中,您可以使用导航器通过将 currentItemSelected 值传递给其构造函数来导航到另一个页面。这样,您可以将信息发送到下一页。

这是一个小例子。 Dartpad example

【讨论】:

    猜你喜欢
    • 2020-11-20
    • 2023-02-21
    • 1970-01-01
    • 2011-09-27
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多