【问题标题】:The argument type 'Iterable<Future<dynamic>>' can't be assigned to the parameter type 'Iterable<Future<news_item>>'参数类型“Iterable<Future<dynamic>>”不能分配给参数类型“Iterable<Future<news_item>>”
【发布时间】:2021-11-23 00:14:41
【问题描述】:

在代码中,我存储了一个 api 的结果,该 api 与另一个 api 合作以给出结果。 我得到了想要的结果,但是当我尝试将该结果存储在一个名为 newsitem 的列表中时,我得到了这个错误.... news_item是json数据的模型类。

class _HomePageState extends State<HomePage> {
     var stories = [news_item];
     @override
     void initState() {
       super.initState();
       getNewsList();
     }
   
     getNewsList() async {
       final newsList = await getHotNewsIds()
           .then((ids) => ids.take(15).map((id) async => await getNewsItem(id)));
       print(newsList);
       List<news_item> newsitem = await Future.wait(newsList);

【问题讨论】:

    标签: android json flutter dart future


    【解决方案1】:

    我无法重现您的错误。

    你可以尝试改变吗

    final newsList = ...
    

    final List<Future<news_item>> newsList = ...
    

    那它告诉你什么?

    对不起,我没有足够的声誉来发表评论

    编辑:您也可以尝试使用以下地图功能:

    .map<Future<news_item>>(...
    

    在某些地方,dart 失去了计算所需类型的能力,但是如果没有您正在使用的函数的定义(例如 getNewsItem()),很难判断这种情况发生在哪里。

    【讨论】:

    • iOSonntag 非常感谢您在使用地图功能后解决了问题。您能否向我解释一下那里出了什么问题,以便我以后小心。
    • 我不是 100% 确定,但猜测使用这个匿名函数 (id) async =&gt; await getNewsItem(id) 并没有明确告诉 dart 它的类型。所以 dart 只是识别 async 关键字,但没有更进一步,因此导致 dart 认为该匿名函数的返回类型是 Future&lt;dynamic&gt; 使用 map 函数上的 操作数通知 map 函数期望的类型,因此 dart编译器可以识别正确的类型。但正如我所说,我对此不是 100% 确定的。如果我的回答解决了您的问题,那么接受正确答案对我很有帮助
    猜你喜欢
    • 2021-07-10
    • 2021-04-07
    • 2020-10-25
    • 2021-11-13
    • 2021-12-24
    • 2022-11-17
    • 2021-12-30
    • 2021-06-13
    • 2021-10-16
    相关资源
    最近更新 更多