我正在使用Future从Firebase数据库返回一些返回Future的信息。现在我想转换bool.Here我面临着null。但是到了then函数中,我发现了我的值,但是当我返回它时,它仍然为null。 / p>
Future<bool> _isfav(String post_key) async {
bool _is_fav;
await FirebaseDatabase.instance
.reference()
.child(Common.user)
.child(Common.number)
.child("favourite")
.child(post_key)
.once()
.then((v) {
print(v.value);
if (v.value != null) {
_is_fav = true;
} else {
_is_fav= false;
}
}).catchError((err) => print(err));
return _is_fav; }
这段代码非常好。但是现在
bool read_fav(String index) {
bool data;
_isfav(index).then((v){
data= v;
print(data); /// printing data
});
print(data); //printing null
return data; //returning null }
当我将数据打印到then函数中时,它显示我的数据,但是当我返回数据时,它返回null。
我想从这里调用函数
child: Icon(
Icons.favorite,
color:read_fav(_key[index])!=null && read_fav(_key[index]) == true
? Colors.blue
: Colors.black,
)),
答案 0 :(得分:0)
只需遵循如下代码,
Future<bool> _isfav(String post_key) async {
bool _is_fav;
var snapData = await FirebaseDatabase.instance
.reference()
.child(Common.user)
.child(Common.number)
.child("favourite")
.child(post_key)
.once();
if (v.value != null) {
_is_fav = true;
} else {
_is_fav = false;
}
return _is_fav;
}
Future<bool> read_fav(String index) async{
bool data=false;
data=await _isfav(index);
return data;
}
此外,read_fav将是将来的方法。因为它取决于_isFav()返回值,该值会在将来预测。
bool isReadFav=await read_fav(index);
只需参考dart等待,然后在Here上引用概念
您都准备好了。