2

这是我的函数 typedef:

typedef Widget ItemBuilder<T>(T item);

这是我的班级财产:

final ItemBuilder<T>? itemBuilder;

这就是我将它传递给我的对象的方式:

itemBuilder: (Color color) => Container(height: 100.0, color: color)

这是我得到的错误:

type '(Color) => Container' is not a subtype of type '((Color?) => Widget)?'

你能帮我解决这个问题吗?

4

1 回答 1

0

这里的类型错误是itemBuilderItemBuilder<Color?>?您传递ItemBuilder<Color>?.

区别是微妙的,但是,您期望一个非 nullColor而参数期望一个回调,期望一个潜在的 null Color?


有两种方法可以解决此问题。

期望不可为空的参数

如果这是可能且有意的,则应将泛型类型参数调整T为,Color而不是Color?,以便最终得到:

final ItemBuilder<Color>? itemBuilder;

使用可空参数传递回调

或者,您可以相应地调整您传递的回调:

itemBuilder: (Color? color) => Container(height: 100.0, color: color)
于 2021-03-07T14:43:32.587 回答