Flutter List 未在异步方法之外更新
Posted
技术标签:
【中文标题】Flutter List 未在异步方法之外更新【英文标题】:Flutter List not updating outside the async method 【发布时间】:2021-08-22 22:40:41 【问题描述】:我在 2 个字符串列表中添加数据,但在它们显示 0 长度的方法之外。但在 fetchList 方法中,它们显示 1643 长度。
fetchList() async
setState(()
isLoading=true;
);
var response = await http.get(Uri.parse("https://type.fit/api/quotes"));
var data = json.decode(response.body);
if (response.statusCode == 200)
for (var i in data)
var response2 = await http.get(Uri.parse(
"https://api.unsplash.com/search/photos?client_id=$unsplashAPIKey&query=$i['author']"));
quoteList.add(
QuoteListClass(
quote: i['text'] != null ? i['text'] : 'Anonymous',
author: i['author'] != null ? i['author'] : '',
image: response2.statusCode == 200
? json.decode(response2.body)['results'][0]['urls']['raw']
: '',
),
);
print(json.decode(response2.body)['results'][0]['urls']['raw']);
else
throw Exception('Failed to load quotes');
setState(()
isLoading = false;
);
@override
void initState()
super.initState();
Future.delayed(Duration.zero,()async
this.fetchList();
);
现在有一个新错误。
E/flutter (9830): [错误:flutter/lib/ui/ui_dart_state.cc(186)] 未处理的异常:RangeError(索引):无效值:有效值 范围为空:0 E/flutter(9830):#0 List.[] (dart:core-patch/growable_array.dart:254:60)
【问题讨论】:
【参考方案1】:如下编辑initState函数
@override
void initState()
super.initState();
Future.delayed(Duration.zero,()async
this.fetchList();
);
【讨论】:
E/flutter (9830): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] 未处理异常:RangeError(索引):无效值:有效值范围为空:0 E /flutter (9830): #0 List.[] (dart:core-patch/growable_array.dart:254:60) 这个错误显示先生以上是关于Flutter List 未在异步方法之外更新的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 如何将裁剪器添加到 fl_chart (CustomPainter)
Flutter 位置流未在 Android Wear 2 上发送 gps 更新