颤振错误:参数类型“列表<动态>?”不能分配给参数类型“列表<动态>”
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<dynamic>
传递给接收 List<dynamic>
作为参数的类,但出现以下错误:
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'
参数类型“Widget Function(Categoria)”不能分配给参数类型“dynamic Function(Child)”。 (型号)颤振