颤抖地从数据库值异步设置颜色

时间:2020-06-17 05:33:46

标签: sqlite flutter dart async-await widget

我有这样的情况。

  1. http调用将从服务器获取数据作为列表
  2. 我必须遍历列表以显示具有特定颜色的容器
  3. 根据数据库值(sqlite)选择颜色
  4. 当尝试通过异步功能设置颜色时,它将无法正常工作

    Future<Color> _getColor(id) async {
        Color myColor;
        myColor = await helper.queryColor(id);
        return myColor;
     }
    
    
    
    for(int i=0;i<list.length;i++) {
        Container(
        color: await _getColor(list.id);
         )}
    

但是显示错误不能将参数类型“ Future”分配给参数类型“ Color”。

2 个答案:

答案 0 :(得分:0)

由于_getColor被定义为Future / Async函数,因此您需要将其称为等待功能。

for(int i=0;i<list.length;i++) { Container( color: await _getColor(list.id), ); }

答案 1 :(得分:0)

最后,我可以在 Future Builder

的帮助下实现我想要的目标
 child: FutureBuilder<Color>(
      future: _getColor(message[i].sId), //This function return color from Sqlite DB Asynchronously
      builder: (BuildContext context, AsyncSnapshot<Color> snapshot) {
        if (snapshot.hasData) {
          return Card(color: snapshot.data);
        }
        else
         return CupertinoActivityIndicator();
      });