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

ARV*_*OCI 2 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,
          );
        },
      )
    )
Run Code Online (Sandbox Code Playgroud)

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

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

Riw*_*wen 8

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


小智 5

您可能已经更新了 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"

希望它能帮助你。

  • 是的,正如Riwen所说的“!” 在子项或小部件名称的末尾,例如``child: child!``` (4认同)