首页 > 解决方案 > 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)?'

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

标签: flutterdartdart-null-safety

解决方案


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

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


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

期望不可为空的参数

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

final ItemBuilder<Color>? itemBuilder;

使用可空参数传递回调

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

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

推荐阅读