ChangeNotifierProvider
提供了一个布尔值,它从SharedPreferences
获取true或false。它应该更新为";真";一旦用户登录。我从FutureBuilder调用这个布尔值。然而,我得到的不是正确的布尔值,而是CircularProgressIndicator()
,指示出了问题。这是代码;
Widget build(BuildContext context) {
var socialProvider = Provider.of<SocialProvider>(context);
return FutureBuilder<bool>(
future: socialProvider.loadCurrentLogged(),
builder: (context, snapshot){
if(!snapshot.hasData) {
return
Column(
children: <Widget>[
Row(
children: <Widget>[
Consumer<SocialProvider>(
builder: (context, socialProvider, _) =>
Container(
child: new RaisedButton(
onPressed: () {
if (snapshot.data != true) {
//Do something here.
} else { // } //switch end
}
),
),
),
),
],
),
],
);
} else {return
Center(
child: CircularProgressIndicator()
);
}
},
);
}
这是ChangeNotifierProvider
提供的未来;
Future<bool> loadCurrentLogged() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool currentlogged = prefs.getBool('currentlogged') ;
return currentlogged;
}
怎么了?
Doh!
if(!snapshot.hasData)
应该是;
if(snapshot.hasData)
叹气。。。