flutter中共享首选项和复选框的问题

时间:2018-04-12 11:10:06

标签: checkbox sharedpreferences flutter

我有一个复选框,我希望保存并在更改后加载。除非我删除应用程序并重建,否则它的工作原理。

以下是信息:

enter image description here

这是我的代码:

void initState() {
    super.initState();

   _loadswitchValue();  // when I remove "_loadswitchValue();", refresh app, 
                        // rewrite "_loadswitchValue();" refresh app, it's 
                        // work. but when I remove app and reinstall app 
                        // with _loadswitchValue();  I have a tristate issue
}


_loadswitchValue() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {

    _checkboxValueB = (prefs.getBool('counter10'));
   });
}

 _savenswitchValue() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
  prefs.setBool('counter10', _checkboxValueB);

 });
}


 bool _checkboxValueB = false;

 @override
 Widget build(BuildContext context) {

return new Scaffold(
  body: new Container(
    padding: new EdgeInsets.all(2.0),
    child: new Column(
      children: <Widget>[

    new Checkbox(

      value: _checkboxValueB,
      onChanged: (bool value) {
        setState(() {
          _checkboxValueB = value;

          _savenswitchValue();

...

1 个答案:

答案 0 :(得分:1)

您需要为布尔值设置默认值。在SharedPreference时,访问未知密钥时,将返回null

所以,像

_loadswitchValue() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  setState(() {
    _checkboxValueB = (prefs.getBool('counter10')) ?? false;
  });
}