【问题标题】:Flutter get selected value from dropdownmenu from other classFlutter 从其他类的下拉菜单中获取选定的值
【发布时间】:2020-10-13 23:50:04
【问题描述】:

我想从我的 Flutter Web 应用程序的另一个类的下拉菜单中获取当前选择的值。由于 dropdownValue 变量是本地变量,因此在其类范围之外无法使用。 这是我尝试过的:

class _DPWidgetState extends State < DPWidget > {
String dropdownValue = '1';
@override
Widget build(BuildContext context) {
    return DropdownButton < String > (
        value: dropdownValue,
        icon: Icon(Icons.arrow_downward),
        iconSize: 24,
        elevation: 16,
        style: TextStyle(color: Colors.deepPurple),
        underline: Container(
            height: 2,
            color: Colors.deepPurpleAccent,
        ),
        onChanged: (String newValue) {
            setState(() {
                dropdownValue = newValue;
            });
        },
        items: < String > ['1', '2', '3']
        .map < DropdownMenuItem < String >> ((String value) {
            return DropdownMenuItem < String > (
                value: value,
                child: Text(value),
            );
        }).toList(),
    );
}
}

【问题讨论】:

  • 这个其他类是否需要访问此小部件的选定值父级?
  • @ClaudioRedi:是的,我希望其他类在用户更改下拉菜单时获得更新的值。

标签: flutter drop-down-menu flutter-layout flutter-web


【解决方案1】:

我想这取决于其他类在您的小部件树中的位置。如果它是您的 DPWidget 的父级,我会将一个回调方法从父类传递给您的小部件并将其用作 onChanged 回调。不再需要使用 setState 了。这样你就可以使用 dropdownValue 来改变父类中的状态。

否则,我建议使用提供程序包来更改小部件树中其他位置的状态。借助提供者,您可以随时随地收听状态变化并根据需要做出反应。

【讨论】:

  • 您能否参考任何“将回调方法从父类传递给您的小部件并将其用作 onChanged 回调”的工作示例?这会很有帮助。
【解决方案2】:

有不同的方法取决于您的小部件树设置
1- 回调函数:
如果您的小部件直接连接到您的 statefulWidget
2- 提供程序包:
如果您的小部件没有直接连接以避免使用大量回调,则此包确实可以帮助您调用此提供程序中的某些更改,而不是通知所有侦听此提供程序类的小部件。

【讨论】:

  • 其他类不在小部件树中。
  • 它是一个小部件类?
  • 我希望下拉列表的选定值的其他类如下所示: class _HomeState extends State {} class Home extends StatefulWidget {}
  • 这可能会帮助你digitalocean.com/community/tutorials/…你可以用回调函数修复它
【解决方案3】:

您可以使用导航将值从一个页面传递到另一个页面尝试一下。

【讨论】:

  • 基本上,我想要一个搜索按钮,其输出将根据下拉菜单中的所选项目而有所不同。
  • 是的,这就是我所说的,只需将所选项目传递到下一页。
猜你喜欢
  • 2019-05-23
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多