#flutter #asynchronous
Вопрос:
Мой код выглядит так:
Future<List<ListClass>> getIndexList() async {
return Future.delayed(delayTime).then((_) async {
//initialize
List<ListClass> resultListItems = new List<ListClass>();
await listCollection.get().then((value) async {
var v = value.data;
for (var data in v) {
String userId = data['userId'];
String authorName=await UserTable().getUserNameById(userId);
print("createUserName=" authorName);
resultListItems.add(
ListClass(header, content, userId, wordCount, authorName));
}
print("resultListItems.length=" resultListItems.length.toString());
return resultListItems;
});
return resultListItems;
});
}
Когда я отлаживаю,это показывает,что этот метод возвращает значение null, и после for
print("resultListItems");
этого он тоже не запускается. Как я могу это исправить?Спасибо!!
Комментарии:
1. сначала проверьте, есть ли какие-либо данные в «var v = value.data;». Если v содержит данные, то ваш for будет выполняться иначе.
2. печать(«Имя пользователя»..) работает нормально,метод добавления работает хорошо,я могу заглянуть в этот список до конца предложения for. Но он не запускает следующий
3. не используйте
then
(низкоуровневыйFuture
API) внутреннийasync
метод — вместо этого просто используйтеawait
— это намного проще и экономнее (особенно если вы новичок вasync
этом деле)4. Извините,без
then
как я могу получить ценность?5.
final foo = await listCollection.get(); print(foo);
Ответ №1:
Я обнаружил проблему,предложение for выполняется не полностью.Одна из моих данных в базе данных равна нулю,поэтому она работает с ошибкой.Извините за мою ошибку