【问题标题】:Flutter upgradation causing The getter 'fullObstruction' isn't defined for the class 'ObstructingPreferredSizeWidget'. error颤振升级导致 getter 'fullObstruction' 没有为类 'ObstructingPreferredSizeWidget' 定义。错误
【发布时间】:2020-04-18 22:38:42
【问题描述】:

我的项目在 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 失败:异常:快照创建期间出错:null 构建失败。

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

【问题讨论】:

  • 请在您的问题中添加您的整个 dart 文件代码
  • 我无法在此处添加我的整个项目,如果您指的是 webrtc,则该库位于 dart pub 中,pub.dev/packages/flutter_webrtc
  • 有错误的文件可以添加
  • 我已经编辑了这个问题,这个问题来自 '/C:/src/flutter/packages/flutter/lib/src/cupertino/page_scaffold.dart' ,它是 Cupertino 库而不是我的代码。
  • 有人可以帮忙吗?

标签: flutter upgrade


【解决方案1】:

对于遇到此问题的人,我在这里提供解决方案。这个问题花了我2天的时间,我很头疼,为什么即使我升级到flutter v1.12.13+hotfix.5-stable.zip的稳定版本,flutter包仍然显示错误

解决方案: 上面的问题是没有为文件 CupertinoPageScaffold.dart 中的 ObstructingPreferredSizeWidget 类定义 fullObstruction。所以我把文件放在了颤振包中的记事本里。原来的路径是 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,我用新变量替换并解决了问题,我的项目和之前一样运行良好。

最终阻塞 = navigationBar.shouldFullyObstruct(context) == null || navigationBar.shouldFullyObstruct(context);

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 2021-06-06
    • 2020-02-28
    • 1970-01-01
    • 2021-03-05
    • 2023-02-02
    • 2021-08-11
    • 2021-02-11
    • 2019-12-01
    相关资源
    最近更新 更多