Flutter 颤振零安全问题:不匹配类型问题

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:

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
的代码)。它可能是从
初始值
推断出来的。