【问题标题】:Flutter to Set Color from Database value AsynchronouslyFlutter 以异步方式从数据库值中设置颜色
【发布时间】:2020-10-06 20:44:22
【问题描述】:

我有这样的场景。

  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'。

【问题讨论】:

    标签: sqlite flutter dart async-await widget


    【解决方案1】:

    由于您的 _getColor 被定义为 Future/Async 函数,因此您需要将其调用为可等待函数。

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

    【讨论】:

    • 无法将参数类型“Future”分配给参数类型“Color”。
    【解决方案2】:

    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();
          });
    

    【讨论】:

      猜你喜欢
      • 2015-07-01
      • 2016-09-01
      • 2013-05-04
      • 2020-09-04
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      相关资源
      最近更新 更多