【问题标题】:Save SharedPrefrence varibale保存 SharedPreferences 变量
【发布时间】:2020-10-23 08:38:32
【问题描述】:

我正在尝试将 SharedPreferences 变量保存一天并在特定时间休息,比如下午 3 点

问题是我不确定我是否正确保存了 SharedPreferences var,当我在模拟器中运行应用程序并单击小部件时,我可以看到图片发生变化,这就是我希望它的工作方式.但是当我点击返回时,我返回到同一页面,SharedPreferences var 会自行重置,就像根本没有保存它一样。

如果我做错了什么,请告诉我,感谢帮助。


class Today extends StatefulWidget {
  @override
  _TodayState createState() => _TodayState();
}

class _TodayState extends State<Today> {
  // Future<SharedPreferences> prefs1 = SharedPreferences.getInstance();
  // Future<int> pic;

  DateTime time = DateTime.now();
  Random random = new Random();


  int intValue3 = 0;

  int number3 = 0;




  getIntValue3() async {
    SharedPreferences prefs3 = await SharedPreferences.getInstance();
    //Return int
    setState(() {
      if (intValue3 == 0) {
      intValue3 = random.nextInt(4);
    }
    intValue3 = prefs3.getInt('intValue3');
    });
    
    return intValue3;
  }

    loadDate()async{

    SharedPreferences prefs3 = await SharedPreferences.getInstance();

    int number3 = random.nextInt(4);

    print('$number3 3');

    prefs3.setInt('intValue3', number3);
    
  }

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

  @override


  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: Container(
        color: Colors.black,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            SizedBox(height: 20),
            Align(
                alignment: Alignment.topLeft,
                child: FlatButton(
                    onPressed: () {
                      Navigator.pop(
                        context,
                        MaterialPageRoute(builder: (context) {
                          return ScreenTwo();
                        }),
                      );
                    },
                    child: Icon(
                      Icons.arrow_back_ios,
                      color: Colors.grey,
                      size: 50.0,
                    ))),

            Material(
              child: InkWell(
                child: Container(
                  height: 200,
                  width: 70,
                  decoration: BoxDecoration(
                      color: Colors.black,
                      image: DecorationImage(
                          image: AssetImage("img/mg$intValue3.jpg"))),
                ),
                onTap: () {
                  setState(() {
                    getIntValue3();
                  });
                },
              ),
            ),
            
          ],
        ),
      ),
    );
  }
}

【问题讨论】:

  • 真的很难吗?

标签: flutter sharedpreferences flutter-dependencies


【解决方案1】:

如果你想保存到 SharedPreference 你必须像这样保存它 preference.setString('tagName', data);

例如:

SharedPreferences preferences = await SharedPreferences.getInstance();
  preferences.setString('id', userId);

你什么时候可以得到它:

print(preferences.getString('id'));

【讨论】:

  • 在您的情况下,您想优先保存 int 只需像这样从 .setString('tag' ,data) 更改为 .setInt('tag' , data)
  • 哦,我没看到很抱歉您的 var 重置为 null 或只是更改 var 中的数据?
  • 我试图将 vars 更改为 var 但没有任何改变,当我返回页面时它再次为 0 并且没有任何保存!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 2013-04-18
相关资源
最近更新 更多