Flutter Error: Method 'addPostFrameCallback' cannot be called on 'SchedulerBinding?' because it is potentially null

Flutter Error: Method 'addPostFrameCallback' cannot be called on 'SchedulerBinding?' because it is potentially null

每当我尝试 运行 我的 Flutter 应用程序时,我都会收到此错误, 之前是 运行ning,我不知道为什么现在不是了。我什至重置为之前的提交,但它仍然不会 运行。

../../../development/flutter/.pub-cache/hosted/pub.dartlang.org/get-4.6.3/lib/get_navigation/src/extension_navigation.dart:357:33: Error: Method 'addPostFrameCallback' cannot be called on 'SchedulerBinding?' because it is potentially null.
 - 'SchedulerBinding' is from 'package:flutter/src/scheduler/binding.dart' ('../../../development/flutter/packages/flutter/lib/src/scheduler/binding.dart').
Try calling using ?. instead.
      SchedulerBinding.instance.addPostFrameCallback((_) {
                                ^^^^^^^^^^^^^^^^^^^^
../../../development/flutter/.pub-cache/hosted/pub.dartlang.org/get-4.6.3/lib/get_navigation/src/extension_navigation.dart:468:33: Error: Method 'addPostFrameCallback' cannot be called on 'SchedulerBinding?' because it is potentially null.
 - 'SchedulerBinding' is from 'package:flutter/src/scheduler/binding.dart' ('../../../development/flutter/packages/flutter/lib/src/scheduler/binding.dart').
Try calling using ?. instead.
      SchedulerBinding.instance.addPostFrameCallback((_) {
                                ^^^^^^^^^^^^^^^^^^^^
../../../development/flutter/.pub-cache/hosted/pub.dartlang.org/get-4.6.3/lib/get_navigation/src/snackbar/snackbar.dart:452:31: Error: Method 'addPostFrameCallback' cannot be called on 'SchedulerBinding?' because it is potentially null.
 - 'SchedulerBinding' is from 'package:flutter/src/scheduler/binding.dart' ('../../../development/flutter/packages/flutter/lib/src/scheduler/binding.dart').
Try calling using ?. instead.
    SchedulerBinding.instance.addPostFrameCallback(
                              ^^^^^^^^^^^^^^^^^^^^
../../../development/flutter/.pub-cache/hosted/pub.dartlang.org/get-4.6.3/lib/get_state_manager/src/rx_flutter/rx_notifier.dart:130:31: Error: Method 'addPostFrameCallback' cannot be called on 'SchedulerBinding?' because it is potentially null.
 - 'SchedulerBinding' is from 'package:flutter/src/scheduler/binding.dart' ('../../../development/flutter/packages/flutter/lib/src/scheduler/binding.dart').
Try calling using ?. instead.
    SchedulerBinding.instance.addPostFrameCallback((_) => onReady());
                              ^^^^^^^^^^^^^^^^^^^^
../../../development/flutter/.pub-cache/hosted/pub.dartlang.org/get-4.6.3/lib/get_state_manager/src/simple/get_controllers.dart:90:29: Error: Method 'addObserver' cannot be called on 'WidgetsBinding?' because it is potentially null.
 - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../../development/flutter/packages/flutter/lib/src/widgets/binding.dart').
Try calling using ?. instead.
    WidgetsBinding.instance.addObserver(this);
                            ^^^^^^^^^^^
../../../development/flutter/.pub-cache/hosted/pub.dartlang.org/get-4.6.3/lib/get_state_manager/src/simple/get_controllers.dart:96:29: Error: Method 'removeObserver' cannot be called on 'WidgetsBinding?' because it is potentially null.
 - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../../development/flutter/packages/flutter/lib/src/widgets/binding.dart').
Try calling using ?. instead.
    WidgetsBinding.instance.removeObserver(this);
                            ^^^^^^^^^^^^^^
../../../development/flutter/.pub-cache/hosted/pub.dartlang.org/get-4.6.3/lib/get_navigation/src/router_report.dart:53:31: Error: Method 'addPostFrameCallback' cannot be called on 'WidgetsBinding?' because it is potentially null.
 - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../../development/flutter/packages/flutter/lib/src/widgets/binding.dart').
Try calling using ?. instead.
      WidgetsBinding.instance.addPostFrameCallback((_) {
                              ^^^^^^^^^^^^^^^^^^^^

失败:构建失败,出现异常。

* Where:
Script '/home/ibrahimdev/development/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1102

* What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.
> Process 'command '/home/ibrahimdev/development/flutter/bin/flutter'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

18 秒内构建失败

SchedulerBindingWidgetsBinding 和其他类的可空性在 Flutter 3.0.0 中发生了变化。所以几个包更新了他们的代码以删除警告。

如果您在开发过程中没有更新任何包,您可能想知道为什么会出现错误。

确保您 运行宁 flutter pub get 而不是 flutter upgrade

解决问题:

  • 运行 flutter clean
  • 删除 pubspeck.lock 如果存在
  • 运行 flutter get

如果您仍然看到错误。也许当你 运行 flutter get.

时包还在更新

因此您可以删除 ^ 例如:flutterfire_ui: ^0.4.0+5 将变为 flutterfire_ui: 0.4.0+5

运行 进入同样的问题并通过将我的 flutter 版本更新到 3.0 版本解决了它。 运行 在您的控制台中进行 flutter upgrade 并重新打开 vscode(或您的编辑器)。 检查右下角(vscode)以确保它已更新到版本 3.0.0

我也一样problem.And你需要升级flutter 3.0.0版本

上次升级 Flutter 3.0.0 时 null-safety 属性发生了一些变化。有几种解决方法。

1-) 如果您升级了最新的 Flutter 版本并且您的错误在 Flutter 核心代码中,您必须尝试;

- dart fix --apply

(参考:https://docs.flutter.dev/development/tools/sdk/release-notes/release-notes-3.0.0

如果此解决方案无法修复任何错误,您可以降级 Flutter 版本;

- flutter downgrade v2.10.5

2-) 如果你没有升级或者错误在third-party包中;

  1. 此包的开发者可能已将此包升级到最新版本的 Flutter。您可以升级包;

    flutter pub upgrade --major-versions
    
  2. 如果开发人员尚未升级,您必须转到此软件包的 Github 存储库并查看问题选项卡。也许有人打开了一个问题,开发人员回答了正确的 运行 版本。比如GetX最新兼容Flutter 2.10.5的版本是4.6.1。因此,要应用此版本,您只需使用版本约束(删除 ^)。

更新

get: ˆ4.6.1

get: 4.6.1

在您的发布规范中。

(参考:https://github.com/jonataslaw/getx/issues/2356

在我的例子中,我的 debug console vscodeauto_route_navigator 的小部件绑定有问题。这就是它对 auto_route: ^4.0.0

的引用
: Error: Method 'addPostFrameCallback' cannot be called on 'WidgetsBinding?' because it is potentially null.
../…/widgets/auto_route_navigator.dart:47
- 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../../../../dev/flutter/packages/flutter/lib/src/widgets/binding.dart').
package:flutter/…/widgets/binding.dart:1
    Try calling using ?. instead.
          WidgetsBinding.instance.addPostFrameCallback((_) {
                                  ^^^^^^^^^^^^^^^^^^^^

所以在包 github 上搜索问题,我发现了这些 https://github.com/Milad-Akarie/auto_route_library/issues/1070#issuecomment-1126674802

之前

auto_route: ^4.0.0

[解决后]

auto_route: "4.0.0"

其他解决方案只需将您的flutter升级到最新的稳定版本(flutter 3

将 flutter 从 2.10.3 升级到 3.0.0 帮助我修复了这个错误。

升级 flutter 到 3.0.0 会解决这个问题