【问题标题】:Error: Not a constant expression(Flutter)错误:不是常量表达式(颤振)
【发布时间】:2021-12-03 07:16:23
【问题描述】:
body: const Center(
        // Center is a layout widget. It takes a single child and positions it
        // in the middle of the parent.
        child: WebView(
          initialUrl: "https://xxxx",
          navigationDelegate: (navigation) {
            return NavigationDecision.navigate;
          },
        ),
      ),

编译时发生错误。

lib/main.dart:84:31: Error: Not a constant expression.
          navigationDelegate: (navigation) {
                              ^^^^^^^^^^^^

当我使用flutter-2.2.0webview_flutter-2.0.13 时,上面的代码可以正常工作。但是在我将flutter升级到2.5.2并将webview_flutter升级到2.0.13之后,错误发生了。 环境(颤振2.5.2):

environment:
  sdk: ">=2.12.0 <3.0.0"
dependencies:
  flutter:
    sdk: flutter
  webview_flutter: 2.1.1

【问题讨论】:

  • 您好,您升级了flutter版本后是否尝试升级包?
  • 只有webview_flutter是我自己安装的,2.1.1是目前最新的版本。实际上项目是在flutter 2.5.2环境下创建的。

标签: flutter webview-flutter


【解决方案1】:

您正在尝试使用 Center 小部件的 const 构造函数,但参数不是常量。

通过使用 const 构造函数创建小部件,您可以指定其所有字段都将在编译时定义。

因此,在您的情况下,您需要在 Center 小部件之前删除 const,因为这不是恒定的:

navigationDelegate: (navigation) {
    return NavigationDecision.navigate;
}

【讨论】:

    【解决方案2】:

    当我迁移到最新的 Flutter 版本时,我在使用其他一些包时遇到了类似的问题,因为我的包版本不是最新的 Flutter 版本。

    运行这个命令,

    flutter pub upgrade --major-versions

    它将您的包(在本例中为 webview_flutter)升级到与您当前的 Flutter 版本兼容的最新版本。

    这对我有用。

    【讨论】:

    • webview_flutter 现在已经是最新版本(2.1.1)了。
    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2017-03-30
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多