保存SharedPrefrence变量

时间:2020-10-23 08:38:32

标签: flutter sharedpreferences flutter-dependencies

我试图将SharedPreferences var保存一天,然后在特定时间(例如下午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();
                  });
                },
              ),
            ),
            
          ],
        ),
      ),
    );
  }
}

1 个答案:

答案 0 :(得分:0)

如果要保存到SharedPreference,则必须这样保存 preference.setString('tagName',data);

例如:

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

,以及何时可以通过以下方式获得它:

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