FutureBuilder快照数据不返回任何内容,为什么? [英] FutureBuilder snapshot Data does not return anything , Why?
本文介绍了FutureBuilder快照数据不返回任何内容,为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
试图通过SharedPreferences获取存储的数据,但是不起作用..
Trying to get stored data by SharedPreferences But does not work ..
我的main.dart:
my 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')..
it returns this widget : Text('None') ..
我的setValue函数:
my setValue Function :
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函数:
my getValue Function :
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);
}
推荐答案
尝试一下,
return FutureBuilder(
future: SaadConstants.getValueFromLocal('app_lang'),
builder: (BuildContext contect, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
else if (snapshot.hasData)
return Text("DATA: ${snapshot.data}");
else if (snapshot.hasError)
return Text("ERROR: ${snapshot.error}");
else
return Text('None');
}
);
您的main.dart也应满足这些条件.
Your main.dart should also implement these conditions.
Widget build(BuildContext context) {
return StreamProvider<User>.value(
value: AuthService().user,
child: MaterialApp(
debugShowCheckedModeBanner: false,
home: FutureBuilder<String>(
future: SaadConstants.setValueFromLocal('app_lang', 'ar'),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
else if (snapshot.hasError)
return Text("ERROR: ${snapshot.error}");
else
return Scaffold(
body: Wrapper(),
);
}
),
),
);
}
这篇关于FutureBuilder快照数据不返回任何内容,为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文