flutter 无法在对话框内获取DropdownButton以在更改/选定时更新为新值

enxuqcxy  于 2022-12-05  发布在  Flutter
关注(0)|答案(1)|浏览(110)

这是我的资料。

String selected = "ONE",

final List<DropdownMenuItem<String>> types = [
  DropdownMenuItem(value: "ONE", child: Text("ex1")),
  DropdownMenuItem(value: "TWO", child: Text("ex2")),
  ...
];

@override
Widget build(context) => Scaffold(
 body: Column(
  ...
  TextButton(
   onPressed: () {
    context: context,
    builder: (context) => AlertDialog(
     content: SizedBox(
      ...
      DropdownButton(
       items: types,
       value: selected,
       onChanged: (String? value) {
        selected = value!;
        setState(() {
         selected;
        });
      })

小部件按预期构建,但是在选择新值后下拉菜单不会更新。

  • 确保全局定义了selected等价项
  • 使用setState()

这两种方法我都试过了,但似乎都不能让它工作。我可以确认selected被设置为等于value,只是没有反映在UI上。

yrwegjxp

yrwegjxp1#

使用StatefulBuilder更新对话框内的用户界面。

showDialog(
  context: context,
  builder: (context) => StatefulBuilder(
    builder: (BuildContext context, setStateSB) {
      return AlertDialog(
        content: DropdownButton(
            items: types,
            value: selected,
            onChanged: (String? value) {
              setStateSB(() {
                selected = value!;
              });
            }),
      );
    },
  ),
);

相关问题