Flutter/Dart - FutureBuilder bool 不返回 bool
Flutter/Dart - FutureBuilder bool not returning bool
我有一个由 ChangeNotifierProvider
提供的布尔值,它从 SharedPreferences
中获取 true 或 false。一旦用户登录,它应该更新为“true”。我从 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;
}
怎么了?
哎呀!
if(!snapshot.hasData)
应该是;
if(snapshot.hasData)
唉...
我有一个由 ChangeNotifierProvider
提供的布尔值,它从 SharedPreferences
中获取 true 或 false。一旦用户登录,它应该更新为“true”。我从 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;
}
怎么了?
哎呀!
if(!snapshot.hasData)
应该是;
if(snapshot.hasData)
唉...