颤振错误:参数类型“列表<动态>?”不能分配给参数类型“列表<动态>”

Posted

技术标签:

【中文标题】颤振错误:参数类型“列表<动态>?”不能分配给参数类型“列表<动态>”【英文标题】:Flutter error: The argument type 'List<dynamic>?' can't be assigned to the parameter type 'List<dynamic>' 【发布时间】:2021-10-28 17:52:38 【问题描述】:

我一直在尝试将 List&lt;dynamic&gt; 传递给接收 List&lt;dynamic&gt; 作为参数的类,但出现以下错误:

The argument type 'List<dynamic>?' can't be assigned to the parameter type 'List<dynamic>'.

这是两个类的代码:

Widget _lista() 
    return FutureBuilder(
      future: menuProvider.cargarData(),
      initialData: [],
      builder: (context, AsyncSnapshot<List<dynamic>> snapshot) 
        return ListView(
          children: _listaItems(snapshot.data),
        );
      ,
    );
  

我在snapshot.data 代码段中遇到错误:

_listaItems(snapshot.data)

这是接收数据的类:

List<Widget> _listaItems(List<dynamic> data) 
    final List<Widget> opciones = [];
    data.forEach((opt) 
      final widgetTemp = ListTile(
        title: Text(opt['texto']),
        leading: Icon(Icons.account_circle, color: Colors.blue),
        trailing: Icon(
          Icons.keyboard_arrow_right,
          color: Colors.blue,
        ),
        onTap: () ,
      );
      opciones..add(widgetTemp)..add(Divider());
    );
    return opciones;
  

我没有找到任何关于如何解决这个问题的信息,而且我不明白这个错误的根源,因为这两种数据类型是相等的。有什么建议可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

试试 _listaItems(snapshot.data!)

【讨论】:

好心的先生...非常感谢您...解决了问题,但是您能否对“!”有所了解?最后? ! 删除了变量的可空性 (?)。或者你可以在你的_listaItems参数data添加一个? 我现在明白了...明白了,非常感谢您的宝贵时间。【参考方案2】:

你应该这样做,不要直接使用!运算符。

Widget _lista() 
    return FutureBuilder(
      future: menuProvider.cargarData(),
      initialData: [],
      builder: (context, AsyncSnapshot<List<dynamic>> snapshot) 
        return ListView(
          children: snapshot.data != null 
                        ? _listaItems(snapshot.data) 
                        : CircularProgressIndicator(),
        );
      ,
    );
  

【讨论】:

我假设这是一个二进制(如果是)操作,但是 CircularProgressIndicator() 方法是做什么的? (抱歉问题,我正在学习Flutter) 它显示加载指示器,我想你会发现它很有用。 一定要尝试一下,非常感谢您抽出宝贵时间。

以上是关于颤振错误:参数类型“列表<动态>?”不能分配给参数类型“列表<动态>”的主要内容,如果未能解决你的问题,请参考以下文章

颤振列表错误参数类型'List'不能分配给参数类型'String'

颤振“参数类型不可分配”两种相同类型的错误

迁移空安全后颤振模拟单元测试错误

颤振无法分配参数类型'List<dynamic>'

在颤振中发出 http.get() 请求的问题

参数类型“Widget Function(Categoria)”不能分配给参数类型“dynamic Function(Child)”。 (型号)颤振