Flutter中没有名为'nullOk'的参数错误

29

在遇到糟糕的问题后,我最终将我的项目转移到了另一个项目中。但是现在,在尝试运行我的程序后,它给出了这个错误,这是我以前从未见过的。而且,我没有编辑这些代码,因为它们是库。

../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_neumorphic-3.0.3/lib/src/widget/app_bar.dart:147:57: Error: No named parameter with the name 'nullOk'.
    final ScaffoldState scaffold = Scaffold.of(context, nullOk: true);
                                                        ^^^^^^
../../Developer/flutter/packages/flutter/lib/src/material/scaffold.dart:1918:24: Context: Found this candidate, but the arguments don't match.
  static ScaffoldState of(BuildContext context) {
                       ^^
../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/neumorphic-0.4.0/lib/src/components/app_bar.dart:32:57: Error: No named parameter with the name 'nullOk'.
    final ScaffoldState scaffold = Scaffold.of(context, nullOk: true);
                                                        ^^^^^^
../../Developer/flutter/packages/flutter/lib/src/material/scaffold.dart:1918:24: Context: Found this candidate, but the arguments don't match.
  static ScaffoldState of(BuildContext context) {
                       ^^
../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/neumorphic-0.4.0/lib/src/components/text_field.dart:953:32: Error: No named parameter with the name 'nullOk'.
        MediaQuery.of(context, nullOk: true)?.navigationMode ??
                               ^^^^^^
../../Developer/flutter/packages/flutter/lib/src/widgets/media_query.dart:818:25: Context: Found this candidate, but the arguments don't match.
  static MediaQueryData of(BuildContext context) {
                        ^^
../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/neumorphic-0.4.0/lib/src/neumorphic/theme.dart:390:52: Error: No named parameter with the name 'nullOk'.
      _cupertinoOverrideTheme.resolveFrom(context, nullOk: nullOk),
                                                   ^^^^^^
../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_neumorphic-3.0.3/lib/src/widget/app_bar.dart:147:57: Error: No named parameter with the name 'nullOk'.
    final ScaffoldState scaffold = Scaffold.of(context, nullOk: true);
                                                        ^^^^^^
../../Developer/flutter/packages/flutter/lib/src/material/scaffold.dart:1918:24: Context: Found this candidate, but the arguments don't match.
  static ScaffoldState of(BuildContext context) {
                       ^^
../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/neumorphic-0.4.0/lib/src/components/app_bar.dart:32:57: Error: No named parameter with the name 'nullOk'.
    final ScaffoldState scaffold = Scaffold.of(context, nullOk: true);
                                                        ^^^^^^
../../Developer/flutter/packages/flutter/lib/src/material/scaffold.dart:1918:24: Context: Found this candidate, but the arguments don't match.
  static ScaffoldState of(BuildContext context) {
                       ^^
../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/neumorphic-0.4.0/lib/src/components/text_field.dart:953:32: Error: No named parameter with the name 'nullOk'.
        MediaQuery.of(context, nullOk: true)?.navigationMode ??
                               ^^^^^^
../../Developer/flutter/packages/flutter/lib/src/widgets/media_query.dart:818:25: Context: Found this candidate, but the arguments don't match.
  static MediaQueryData of(BuildContext context) {
                        ^^
../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/neumorphic-0.4.0/lib/src/neumorphic/theme.dart:390:52: Error: No named parameter with the name 'nullOk'.
      _cupertinoOverrideTheme.resolveFrom(context, nullOk: nullOk),


    Command PhaseScriptExecution failed with a nonzero exit code
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description

Could not build the precompiled application for the device.
                                                   ^^^^^^

以下是我的pubspec.yaml文件:
name: Test


environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  rflutter_alert: ^1.0.3
  flutter:
    sdk: flutter
  mqtt_client: ^8.0.0
  provider: ^4.3.2+2
  get_it: ^5.0.1
  vibration: ^1.7.2
  clay_containers: ^0.2.2
  local_auth: ^0.6.2+1
  flutter_secure_storage: ^3.3.3
  neumorphic: ^0.4.0
  shared_preferences: ^0.5.8
  flutter_neumorphic: ^3.0.3
  cupertino_icons: ^0.1.3

dev_dependencies:
  flutter_test:
    sdk: flutter


# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:
  uses-material-design: true
  assets:
    - images/homestadelogo.png
    - images/morning.png
  fonts:
    - family: OpenSans
      fonts:
        - asset: fonts/assets/fonts/OpenSans.ttf
    - family: myLamp
      fonts:
        - asset: fonts/assets/fonts/mylamp.ttf

我该怎么做?如果你需要更多细节,直接问我就好了。


你的应用程序中有脚手架吗? - Joy Terence
是的。为什么?基本上在我的.dart文件中到处都是。 - Miles
如果需要的话,我刚刚发布了我的pubspec.yaml文件。 - Miles
我也遇到了这个错误,不知道为什么或如何修复它。 - MaylorTaylor
这似乎是flutter_neumorphic中的一个错误。他们需要修补它以符合当前的Flutter标准。 - Mark
稍微更新一下,这个错误可能是由许多因素引起的,我认为在这篇帖子中的每个答案都可以解决你面临的问题。 - Miles
10个回答

12

在空值安全迁移的过程中,几个nullOk参数已被删除。您可以阅读相关的设计文档及其即将发布的迁移指南,具体内容请参见此处此处

简而言之,您可以尝试使用.maybeOf(context)代替.of(context, nullOk: true);

您可能需要更新依赖项才能使其正常工作。


我已经把它们全部更新了,但现在出现错误提示:“错误:找不到方法:'Scaffold.maybeOk'。 最终的ScaffoldState承载体是Scaffold.maybeOk(context)。” - Miles
2
@Miles Answerer 可能是指 maybeOf 而不是 maybeOk。请查看他们的链接。 - Christopher Moore

12

经过大量的努力,我找到了一个成功的方法来消除这个错误。

如果你已经在pubspec.yaml中添加了SVG依赖项,那么请将其替换为

flutter_svg: ^0.20.0-nullsafety.3


6
如果您正在使用neumorphic,请按照以下步骤操作:
定位文件位置:

home/.pub-cache/hosted/pub.dartlang.org/flutter_neumorphic-3.0.3/lib/src/widget/app_bar.dart

搜索如下代码段:

final ScaffoldState scaffold = Scaffold.maybeOf(context);

尝试使用.maybeOf(context);代替.of(context, nullOk: true);

4

对于在这里的任何人,对我有效的方法就是更新我的依赖项,然后运行flutter clean


3

终于解决了。

修改 media_query.dart 文件,查找: static MediaQueryData of(BuildContext context) 函数,然后将其修改为:

static MediaQueryData of(BuildContext context, { bool nullOk = false })

1
  • 首先,打开您的 pubspec.yaml 文件。

  • 在右上角点击 Pub outdated 菜单。如果您使用的是 android studio IDE,则需要执行此步骤。

几秒钟后,您将看到一个包含版本号软件包名称列表。

  • 通过最新的版本号更新所有依赖项。同时,您还需要更新dev_dependencies下的 flutter_launcher_icons 版本。

  • 点击 Pub get 菜单进行更新。

成功获取所有软件包之后,运行您的应用程序。

仍然可能会出现一些旧代码的错误。例如:

 Scaffold.of(context) 

替代

 Scaffold.of(context, nullOk: true)

因为在迁移后,空值安全(null safety)已经删除了nullOk参数。
注意:请查看正确的使用文档。https://api.flutter.dev/flutter/material/Scaffold/of.html 再次运行您的项目,享受愉快的编码。谢谢。

1
我终于成功解决了我的问题。对于我的情况,可能不适用于你的情况,我删除了“build”文件夹,然后在不进行任何操作的情况下运行它。然后Flutter会自动再次创建该文件。我个人在Android Studio中找不到“build”。所以我在VSCode上运行它,它显示了该文件夹。所以你可以试一下。

0
我曾经遇到过类似的问题,后来发现这是依赖关系的问题,具体来说是: flutter_neumorphic neumorphic
你可以将它们升级到支持空安全的版本,或者运行flutter clean命令(如果两个依赖项都是最新的)来解决问题。

0

我通过使用解决了这个问题

Scaffold.of(context)

不是

Scaffold.of(context, nullOk: true)

0
将 :/Flutter/.pub-cache 文件夹移动到另一个位置对我起了作用。我没有删除它,因为它可能会影响到其他项目。然后我会把它放回原来的位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接