参数类型“小部件?”无法分配给参数类型“小部件”

时间:2021-05-19 07:39:48

标签: flutter dart

我将应用程序包装在滚动配置中以移除滚动发光。这一直有效,但自从我使用 flutter 已经有一段时间了,所以我创建了一个新项目,但它出现了这个错误。

ProviderScope(
      child: MaterialApp(
        title: 'testing',
        themeMode: ThemeMode.light,
        darkTheme: darkTheme(),
        theme: lightTheme(),
        onGenerateRoute: RouteGenerator.generateRoute,
        initialRoute: '/',
        builder: (context, child) {
          return ScrollConfiguration(
            behavior: RemoveScrollGlow(),
            child: child,
          );
        },
      )
    )

问题是孩子:孩子。我不知道如何解决这个问题。

class RemoveScrollGlow extends ScrollBehavior {
  @override
  Widget buildOverscrollIndicator(
    BuildContext context, Widget child, ScrollableDetails details) {
    return child;
  }
}

3 个答案:

答案 0 :(得分:4)

如果您确定该值永远不会为空,则可以将其强制转换为不可为空的类型,即。 Widget 明确。或者简单地添加一个 ! 后缀,如下所示:child!

答案 1 :(得分:0)

您已在项目中启用了空安全。并且您的 child 具有 Widget? 类型,其中作为 ScrollConfiguration 的子代需要 Widget 类型。

WidgetWidget? 有什么区别?

Widget? 表示它可以有空值,而 Widget 的类型是非空的。

https://dart.dev/null-safety 阅读更多

答案 2 :(得分:-1)

您会更新 dart SDK 版本,因此您的项目中包含空安全。

解决方法很简单,只需转到您的 pubspec.yaml 文件,然后在环境变量下,您会找到 dart SDK 范围,它应该是这样的 sdk:">=2.12.0 <3.0.0"

现在您只需将其从 2.12.0 更改为 2.7.0,这将使您的项目能够在没有空安全的情况下运行,并使您的项目无错误。所以更新后的 sdk 版本应该看起来像 sdk: ">=2.7.0 <3.0.0"

希望能帮到你。