(我是dart的新手,但我有25年以上的开发经验,如C#,JS.)
为什么会发生这种异常?我在这一行没有任何意义...检查null永远不应该抛出类型异常。这背后的原因是什么?
if (widget.columnDef.setEditValueFunc != null) {
字符串
的数据
setEditValueFunc的声明是:
class CdItemsViewColumnDef<T> {
late void Function(T, String)? setEditValueFunc;
...
型
setEditValue是这样设置的:
final List<CdItemsViewColumnDef<MyDataItem>> columnDefs = [];
columnDefs.add(CdItemsViewColumnDef<MyDataItem>(
setEditValue: (item, value) => item.name = value,
...
型
我需要以某种方式转换null吗?
将声明更改为
class CdItemsViewColumnDef<T> {
late void Function(dynamic, String)? setEditValueFunc;
...
型
是在解决问题。但实际上我想在这里用T。
1条答案
按热度按时间cqoc49vn1#
在这个例子中,我假设你的集合是
List
,但它可以是任何集合。字符串
当您将集合定义为
CdItemsViewColumnDef<dynamic>
时会导致问题,稍后尝试强制执行不同的对象类型:CdItemsViewColumnDef<MyDataItem>
根据您的使用情况:
方案一
型
这将被解释为
CdItemsViewColumnDef<dynamic>
的集合方案二
型
这将被解释为
CdItemsViewColumnDef<MyDataType>
的集合显然,如果可以的话,你应该总是使用强类型(解决方案2),但是如果你想拥有集合项的动态类型,整个集合必须是
List<dynamic>