我试图将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();
});
},
),
),
],
),
),
);
}
}
答案 0 :(得分:0)
如果要保存到SharedPreference,则必须这样保存 preference.setString('tagName',data);
例如:
SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.setString('id', userId);
,以及何时可以通过以下方式获得它:
print(preferences.getString('id'));