Flutter开发报错:参数类型Iterable<Future<dynamic>>无法赋值给Iterable<Future<news_item>>
问题原因及修复方案
你代码中存在几处核心问题直接导致存储时报错:
- 状态变量初始化错误:
var stories = [news_item];是把news_item类型本身放入了列表,而非该类型的实例,会引发后续类型不匹配报错 - 异步调用逻辑冗余混乱:
await+then嵌套使用、map内部重复加await的写法,极易出现类型推断异常 - 拿到数据后未触发状态更新,就算存储成功也无法同步到UI层
修复后的完整代码如下:
class _HomePageState extends State<HomePage> { // 正确初始化news_item类型的空列表 List<news_item> stories = []; @override void initState() { super.initState(); getNewsList(); } Future<void> getNewsList() async { // 先获取热点新闻ID列表 final ids = await getHotNewsIds(); // 生成批量获取新闻详情的Future列表 final newsFutureList = ids.take(15).map((id) => getNewsItem(id)); // 等待所有请求完成得到模型实例列表 List<news_item> newsitem = await Future.wait(newsFutureList); // 更新状态触发UI刷新 setState(() { stories = newsitem; }); } }
如果仍有类型报错,请确认getNewsItem方法的返回值为Future<news_item>类型,JSON转模型的逻辑不存在类型转换错误。
内容的提问来源于stack exchange,提问作者Malik Zaib
相关产品推荐
相关产品推荐

