Flutter 升级导致 getter 'fullObstruction' 没有为 class 'ObstructingPreferredSizeWidget' 定义。错误

Flutter upgradation causing The getter 'fullObstruction' isn't defined for the class 'ObstructingPreferredSizeWidget'. error

我的项目在 1.10.0 版本上运行良好,我已将 flutter 升级到新版本 1.12,但出现以下错误

编译器消息:

../../../AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/flutter_platform_widgets-0.20.2/lib/src/platform_scaffold.dart:229:38: Error: The getter 'fullObstruction' isn't defined for the class 'ObstructingPreferredSizeWidget'.
 - 'ObstructingPreferredSizeWidget' is from 'package:flutter/src/cupertino/page_scaffold.dart' ('/C:/src/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'fullObstruction'.
      final obstruct = navigationBar.fullObstruction == null ||
                                     ^^^^^^^^^^^^^^^
../../../AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/flutter_platform_widgets-0.20.2/lib/src/platform_scaffold.dart:230:25: Error: The getter 'fullObstruction' isn't defined for the class 'ObstructingPreferredSizeWidget'.
 - 'ObstructingPreferredSizeWidget' is from 'package:flutter/src/cupertino/page_scaffold.dart' ('/C:/src/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'fullObstruction'.
          navigationBar.fullObstruction;
                    ^^^^^^^^^^^^^^^

目标 kernel_snapshot 失败:异常:创建快照时出错:空 构建失败。

再次将 flutter 降级到 1.10 项目工作正常,但我需要将 webrtc 库升级到这个 1.12 版本。有人可以帮助解决这个问题吗?

对于那些遇到这个问题的人,我在这里提供了一个解决方案。这个问题花了我2天的时间,我一直在敲脑袋,为什么升级到稳定版的flutter v1.12.13+hotfix.5-stable.zip

flutter package 还是报错

解法: 上面的问题表明 fullObstruction 没有为文件 CupertinoPageScaffold.dart 中的 class ObstructingPreferredSizeWidget 定义。所以我把文件放在 flutter 包里的记事本里。原路径是 C:\src2\flutter\packages\flutter\lib\src\cupertino ,src2是我的flutter包所在的文件夹。

在那个文件中,我看到一个变量在较新版本中发生了变化,而不是之前的变量下面是 fullObstruction,它们变成了 bool shouldFullyObstruct(BuildContext context);在较新的版本中。

abstract class ObstructingPreferredSizeWidget extends PreferredSizeWidget {
  /// If true, this widget fully obstructs widgets behind it by the specified
  /// size.
  ///
  /// If false, this widget partially obstructs.
  bool shouldFullyObstruct(BuildContext context);
}

然后我检查这个错误发生在哪个文件, C:\src2\flutter.pub-cache\hosted\pub.dartlang.org\flutter_platform_widgets-0.20.2\lib\src\platform-scaffold.dart

早些时候,这一行使用了已弃用的变量 fullObstruction,我用新变量替换并解决了问题,我的项目和之前一样运行良好。

final obstruct = navigationBar.shouldFullyObstruct(context) == null || navigationBar.shouldFullyObstruct(上下文);

希望这对某人有所帮助。