Flutter 颤振零安全问题:不匹配类型问题
这是我的函数typedef:Flutter 颤振零安全问题:不匹配类型问题,flutter,dart,dart-null-safety,Flutter,Dart,Dart Null Safety,这是我的函数typedef: typedef小部件项生成器(T项); 这是我的类属性: 最终项目生成器?项目生成器; 以下是我将其传递给对象的方式: itemBuilder:(颜色)=>容器(高度:100.0,颜色:颜色) 这是我得到的错误: type '(Color) => Container' is not a subtype of type '((Color?) => Widget)?' 您能帮我解决这个问题吗?这里的类型错误是,当您传递itemBuilder?的实例时
typedef小部件项生成器(T项);
这是我的类属性:
最终项目生成器?项目生成器;
以下是我将其传递给对象的方式:
itemBuilder:(颜色)=>容器(高度:100.0,颜色:颜色)
这是我得到的错误:
type '(Color) => Container' is not a subtype of type '((Color?) => Widget)?'
您能帮我解决这个问题吗?这里的类型错误是,当您传递
itemBuilder?
的实例时,itemBuilder
属性的类型为itemBuilder?
但是,差别很小,您需要一个非null的颜色
,而参数需要一个回调,该回调需要一个可能为null的颜色
有两种方法可以解决这个问题 应为不可为空的参数 如果这是可能的,并且是有意的,则应将泛型类型参数
T
调整为Color
,而不是Color?
,以便最终得到:
最终项目生成器?项目生成器;
使用可为null的参数传递回调
或者,您可以相应地调整正在传递的回调:
itemBuilder:(颜色?颜色)=>容器(高度:100.0,颜色:颜色)
我正在尝试将我的包迁移到空安全模式,我使用了迁移工具。(如果您需要更多的上下文,这里是包:)第一个选项是不可能的,因为它应该是T。我不太明白这是怎么解释的:final ItemBuilder?itemBuilder;------------ItemBuilder?@FigenGüngör,因为T
是Color?
。您需要确保T
是Color
。关键部分是T
设置为Color?
来自使用SingleChoiceConfirmationDialog
类的代码(您还没有向我们展示正在实例化SingleChoiceConfirmationDialog
的代码)。它可能是从初始值
或项
推断出来的。