我想在我的应用程序中实现“收藏夹”,数据卡中有一个“收藏夹”图标,允许用户标记或取消标记收藏夹。有读取本地数据库的功能,以查看记录是否被标记并显示相应的图标。
Widget setFavouriteIcon(_id) {
bool marked = markedFavourites(_id);
if (marked == true) {
return GestureDetector(
onTap: (){
addFavourites(_id);
},
child: Icon(
size: 24,
Icons.favorite_border_outlined,
color: Colors.red,
),
);
}else{
return GestureDetector(
onTap: (){
removeFavourites(_id);
},
child: Icon(
size: 24,
Icons.favorite,
color: Colors.red,
),
);
}
}
markedFavourites()假设是一个异步函数来读取本地数据库,但是我得到了一个编译错误:不能将"Future“类型的值赋给”bool“类型的变量。
我应该如何从一个未来得到一个布尔值?
3条答案
按热度按时间qnakjoqk1#
为了从将来返回的函数中获取一个
bool
值,你需要await
它,你的函数需要返回一个Future<bool>
(bool类型的将来)。检查你的函数返回类型是什么,然后在你的代码中await
它,比如bool marked = await markedFavourites(_id);
。并且把你的setFavouriteIcon(_id)
函数标记为async
,比如Widget setFavouriteIcon(_id) async {
omjgkv6w2#
您可以得到如下响应:
已标记的未来=等待已标记的收藏夹(_id);之后,只需检查标记是否为空,之后,以与使用代码相同的方式执行操作
bybem2ql3#
是的,你应该和
.then()
或者async``await
一起使用来插入未来的值到变量中。像这样写。