【发布时间】:2020-05-01 10:32:06
【问题描述】:
试图通过 SharedPreferences 获取存储的数据但不起作用..
我的 main.dart :
Widget build(BuildContext context) {
return StreamProvider<User>.value(
value: AuthService().user,
child: FutureBuilder<String>(
future: SaadConstants.setValueFromLocal('app_lang','ar'),
builder: (BuildContext context, AsyncSnapshot<String> snapshot){
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body:Wrapper(),
),
);
}
),
);
}
我的包装:
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
if (user==null) {
return FutureBuilder(
future: SaadConstants.getValueFromLocal('app_lang'),
builder: (BuildContext contect , AsyncSnapshot<String> snapshot){
if (snapshot.hasData) {
return Text('has data');
}
else return Text('None');
}
);
}
else{
return Text('connect');
}
它返回这个小部件:Text('None') ..
我的 setValue 函数:
static Future<String> setValueFromLocal(String key, String value) async { // Async func to handle Futures easier; or use Future.then
SharedPreferences perfs = await SharedPreferences.getInstance();
perfs.setString(key.toString(),value.toString());
}
我的 getValue 函数:
static Future<String> getValueFromLocal(String key) async { // Async func to handle Futures easier; or use Future.then
SharedPreferences perfs = await SharedPreferences.getInstance();
return perfs.getString(key);
}
【问题讨论】:
标签: flutter async-await sharedpreferences