Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 为什么DropdownButton的dropdownValue没有更新?_Flutter_Dart - Fatal编程技术网

Flutter 为什么DropdownButton的dropdownValue没有更新?

Flutter 为什么DropdownButton的dropdownValue没有更新?,flutter,dart,Flutter,Dart,我完成了这个链接中的步骤,但是字符串dropdownValue='One';当我按下“两个”或“三个”或其他按钮时,无法更改,也无法更改设置“状态不工作”。你能帮我吗 完整代码为: String dropdownValue = 'One'; @override Widget build(BuildContext context) { return DropdownButton<String>( value: dropdownValue, icon: Icon(I

我完成了这个链接中的步骤,但是字符串dropdownValue='One';当我按下“两个”或“三个”或其他按钮时,无法更改,也无法更改设置“状态不工作”。你能帮我吗

完整代码为:

String dropdownValue = 'One';

@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>['One', 'Two', 'Free', 'Four']
      .map<DropdownMenuItem<String>>((String value) {
        return DropdownMenuItem<String>(
          value: value,
          child: Text(value),
        );
      })
      .toList(),
  );
}
String-dropdownValue='One';
@凌驾
小部件构建(构建上下文){
返回下拉按钮(
value:dropdownValue,
图标:图标(图标。向下箭头),
iconSize:24,
海拔:16,
样式:TextStyle(
颜色:颜色。深紫色
),
下划线:容器(
身高:2,
颜色:颜色。深紫色,
),
onChanged:(字符串newValue){
设置状态(){
dropdownValue=newValue;
});
},
物品:[“一”、“二”、“免费”、“四”]
.map((字符串值){
返回下拉菜单项(
价值:价值,
子项:文本(值),
);
})
.toList(),
);
}

从上面提到的代码中,我刚刚复制粘贴了它,它运行得非常好。只需检查您是否正在使用Statefull小部件。由于我已经在下面添加了代码,请检查它

import 'package:flutter/material.dart';

main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  MyApp({Key key}) : super(key: key);

  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
 String dropdownValue = 'One';

@override
Widget build(BuildContext context) {
  return MaterialApp(
      home: Scaffold(
              body: Center(
                              child: 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>['One', 'Two', 'Free', 'Four']
          .map<DropdownMenuItem<String>>((String value) {
            return DropdownMenuItem<String>(
                value: value,
                child: Text(value),
            );
          })
          .toList(),
    ),
              ),
      ),
  );
}
}
导入“包装:颤振/材料.省道”;
main()=>runApp(MyApp());
类MyApp扩展了StatefulWidget{
MyApp({Key}):超级(Key:Key);
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
字符串dropdownValue='One';
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
正文:中(
孩子:下拉按钮(
value:dropdownValue,
图标:图标(图标。向下箭头),
iconSize:24,
海拔:16,
样式:TextStyle(
颜色:颜色。深紫色
),
下划线:容器(
身高:2,
颜色:颜色。深紫色,
),
onChanged:(字符串newValue){
设置状态(){
dropdownValue=newValue;
});
},
物品:[“一”、“二”、“免费”、“四”]
.map((字符串值){
返回下拉菜单项(
价值:价值,
子项:文本(值),
);
})
.toList(),
),
),
),
);
}
}
我还添加了gif图像,向您展示了代码的完美运行


是的,你是对的,我想我犯了错误,因为我使用了StreamBuilder。当我使用clean stful时,它的工作是正确的,但如果我使用Stream builder,它就会出错。因此,如果最终成功,那就太好了,因此如果你获得了所需的输出,只需勾选一个复选框并进行升级投票,这样对其他人会有所帮助