Flutter для асинхронной установки цвета из значения базы данных - PullRequest
0 голосов
/ 17 июня 2020

У меня есть такой сценарий.

  1. HTTP-вызов получит данные с сервера в виде списка
  2. Мне нужно l oop через список, чтобы показать контейнер с конкретный цвет
  3. Цвет выбирается на основе значения базы данных (sqlite)
  4. При попытке установить цвет из функции asyn c он не будет работать

    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 голосов
/ 17 июня 2020

Наконец-то я смог достичь того, чего хочу, с помощью 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();
      });
0 голосов
/ 17 июня 2020

Поскольку ваш _getColor определен как функция Future / Asyn c, вам необходимо вызвать ее как функцию ожидания.

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

...