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 秒内构建失败
SchedulerBinding
、WidgetsBinding
和其他类的可空性在 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包中;
此包的开发者可能已将此包升级到最新版本的 Flutter。您可以升级包;
flutter pub upgrade --major-versions
如果开发人员尚未升级,您必须转到此软件包的 Github 存储库并查看问题选项卡。也许有人打开了一个问题,开发人员回答了正确的 运行 版本。比如GetX最新兼容Flutter 2.10.5的版本是4.6.1。因此,要应用此版本,您只需使用版本约束(删除 ^)。
更新
get: ˆ4.6.1
至
get: 4.6.1
在您的发布规范中。
在我的例子中,我的 debug console vscode
的 auto_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 会解决这个问题
每当我尝试 运行 我的 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 秒内构建失败
SchedulerBinding
、WidgetsBinding
和其他类的可空性在 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包中;
此包的开发者可能已将此包升级到最新版本的 Flutter。您可以升级包;
flutter pub upgrade --major-versions
如果开发人员尚未升级,您必须转到此软件包的 Github 存储库并查看问题选项卡。也许有人打开了一个问题,开发人员回答了正确的 运行 版本。比如GetX最新兼容Flutter 2.10.5的版本是4.6.1。因此,要应用此版本,您只需使用版本约束(删除 ^)。
更新
get: ˆ4.6.1
至
get: 4.6.1
在您的发布规范中。
在我的例子中,我的 debug console vscode
的 auto_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 会解决这个问题