如何在Flutter中将dropdownmenu与sharedpref一起使用

时间:2018-09-05 04:12:25

标签: flutter

我试图使用下拉按钮来选择菜单中的文本并显示它。之后,我发送带有所选文本的短信。最后,我尝试使用sharedpref保存值,以在应用关闭后显示文本。为此,我在初始化状态下上传了sharedpref。但是我有一个错误:

     failed assertion line 481 pos 15: value==null||items.where((DropdownMenuItem<T> 
     item) => item.value == value).length == 1: is not true.

这是我的下拉按钮块:

                                      new DropdownButton<String>(

                                        onChanged: (String changedValue) {
                                          selectedText=changedValue;
                                          setState(() {
                                            selectedText;

                                          });
                                        },
                                        value: selectedText,
                                        items: <String>['1', '2', '3','4', '5', '6','7', '8', '9']
                                            .map((String value) {
                                          return new DropdownMenuItem<String>(
                                            value: value,
                                            child: new Text(value),
                                          );
                                        }).toList()),

这是我的sharedpref块:

 _savevaluesonnerie() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
      setState(() {
      prefs.setString('counter305', selectedText);
     });
   } 


  _loadvaluesonnerie() async {
     SharedPreferences prefs = await SharedPreferences.getInstance();
      setState(() {
      selectedText = (prefs.getString('counter305')) ??"" ;
   });
   }

我在初始化状态下调用此sharedpref块以显示保存的值

 @override
  void initState() {
   super.initState();

   _loadvaluesonnerie();
  }

谢谢

1 个答案:

答案 0 :(得分:2)

当您使用 async 函数_loadvaluesonnerie()设置selectedText时,selectedText将为空。

您可以将某些{strong>默认值(例如'1'(项中的第一项)设置为selectedText的初始值吗?

这对您有用吗?