flutter - Flutter List 未在异步方法之外更新
问题描述
我在 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): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] 未处理异常: RangeError (index): 无效值: 有效值范围为空: 0 E/flutter (9830): #0 List.[] (dart:core-patch/growable_array.dart:254:60)
解决方案
编辑initState函数如下
@override
void initState() {
super.initState();
Future.delayed(Duration.zero,()async{
this.fetchList();
});
}
推荐阅读
- apache-kafka - 即使在配置广告侦听器后也无法连接到远程 kafka 代理
- constraints - Optaplanner 7 ConstraintStream 根据每个实例的函数值奖励
- java - 在不同线程中处理数据库中多行的最佳实践
- lua - luajit '=' 预计在 '-' 附近
- javascript - 如何检测滚动条是否存在?
- node.js - 对路径“_id”执行更新将修改 mongoose/mongodb 上的不可变字段“_id”
- arrays - 在Vuejs中使用过滤器搜索json?
- azure - Azure Web 应用连接到专用网络上的 VM 服务
- c# - Cookie.ExpireTimeSpan 被忽略并在 CookieAuthentication 中设置为 Session
- reactjs - 简单的 MobX Observable 不渲染