flutter - Flutter Null-Safety 问题:不匹配类型问题
问题描述
这是我的函数 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)?'
你能帮我解决这个问题吗?
解决方案
这里的类型错误是itemBuilder
当ItemBuilder<Color?>?
您传递ItemBuilder<Color>?
.
区别是微妙的,但是,您期望一个非 nullColor
而参数期望一个回调,期望一个潜在的 null Color?
。
有两种方法可以解决此问题。
期望不可为空的参数
如果这是可能且有意的,则应将泛型类型参数调整T
为,Color
而不是Color?
,以便最终得到:
final ItemBuilder<Color>? itemBuilder;
使用可空参数传递回调
或者,您可以相应地调整您传递的回调:
itemBuilder: (Color? color) => Container(height: 100.0, color: color)
推荐阅读
- unity3d - 有什么方法可以改变 Unity 中自定义 Sprite 的 FilterMode?
- typescript - 可以选择在打字稿中扩展一种类型的道具?
- javascript - 根据另一个数组获取一个数组中元素的索引
- r - Rstudio没有读入文件
- python - 在 matplotlib 中创建非对称轴
- android - Android Studio 序列化
- google-analytics - 是否有一种解决方法可以在 Google Analytics(分析)中为同一目标创建多个渠道?
- redis - Dovecot 无法初始化 dict: dict redis: Invalid IP
- mysql - Wordpress Docker“建立数据库连接时出错”
- imagemagick - 在 MacOS Catalina 上安装 Imagick 时出错