Error: Field 'wLanguage' cannot be nullable or have type 'Null', it must be `int`, `double`, `Pointer`, or a subtype of `Struct` or `Union`

回答 10 浏览 3873 2023-05-17

当运行flutter build appbundle命令时,我得到了以下错误:

../../.pub-cache/hosted/pub.dev/package_info_plus_windows-2.1.0/lib/src/file_version_info.dart:13:17: 
Error: Field 'wLanguage' cannot be nullable or have type 'Null', it must be `int`, `double`, `Pointer`, or a subtype of `Struct` or `Union`.
  external int? wLanguage;
                ^

../../.pub-cache/hosted/pub.dev/package_info_plus_windows-2.1.0/lib/src/file_version_info.dart:16:17: 
Error: Field 'wCodePage' cannot be nullable or have type 'Null', it must be `int`, `double`, `Pointer`, or a subtype of `Struct` or `Union`.
  external int? wCodePage;
                ^
Target kernel_snapshot failed: Exception

FAILURE: Build failed with an exception.

我正在使用Flutter 3.10.0。在我更新flutter版本之前,该项目运行良好。

Gedeon Mutshipayi 提问于2023-05-17
你有没有试过upgrading导致错误的插件?Clevino Alrin 2023-05-17
package_info_plus windows插件是由flutter内部使用的,我想我无法控制它。Gedeon Mutshipayi 2023-05-17
另一方面,我更新了pubspec.yaml中的所有软件包,但错误仍然存在。Gedeon Mutshipayi 2023-05-17
试过clean命令吗?有时缓存会带来麻烦。如果你升级flutter是出于其他原因(其他软件包或功能要求),我想你可以暂时降级。这可能是该版本的一个错误Clevino Alrin 2023-05-17
啊,我看到你最近也升级到了flutter 3.10 :)David Chopin 2023-05-17
10 个回答
#1楼
得票数 3

对我来说是 flutter screen utils 和 google font

我做的第一件事是运行

flutter pub upgradeflutter pub upgrade --major-versions

然后我把android文件夹中的ext.kotlin改成最新的,然后建立gradle,以

ext.kotlin = '1.6.20'ext.kotlin_version = '1.8.21'

然后我就可以运行我的项目了,我希望这对我有帮助。

Arbiter Chil 提问于2023-05-18
#2楼 已采纳
得票数 3

我最终通过在我的项目的pubspec.yaml中重写这些包来解决我的问题。

dependency_overrides:
  package_info_plus: ^4.0.1
  wakelock_windows: any
  win32: any

dependency_overrides:
  package_info_plus: any

由于我的项目依赖性,将package_info_plus重写为^4.0.1给我带来了以下错误信息。

Because no versions of wakelock_windows match >0.2.1 <0.3.0 and wakelock_windows <0.2.1 depends on win32 ^2.0.0, wakelock_windows <0.2.1-∞ or >0.2.1 <0.3.0 requires win32 ^2.0.0. And because wakelock_windows 0.2.1 depends on win32 ^3.0.0, wakelock_windows <0.3.0 requires win32 ^2.0.0 or ^3.0.0. And because package_info_plus >=4.0.1 depends on win32 >=4.0.0 <6.0.0 and wakelock 0.6.2 depends on wakelock_windows ^0.2.0, package_info_plus >=4.0.1 is incompatible with wakelock 0.6.2. Because chewie >=1.3.5 depends on wakelock ^0.6.2 and no versions of wakelock match >0.6.2 <0.7.0, chewie >=1.3.5 requires wakelock 0.6.2. Thus, package_info_plus >=4.0.1 is incompatible with chewie >=1.3.5. So, because start depends on both chewie ^1.4.0 and package_info_plus ^4.0.1, version solving failed.

如果你在覆盖package_info_plus后有类似的信息,你可以检查依赖的软件包,并将它们添加到dependency_overrides中,然后像我上面的例子那样将版本设置为any


Any关键字可以用来指定一个包的任何版本都可以接受。如果你想确保你的应用程序与某个包的最新版本兼容,或者你想避免在某个包的未来版本中可能引入的破坏性变化,这可能很有用。

Gedeon Mutshipayi 提问于2023-05-25
Gedeon Mutshipayi 修改于2023-05-27
#3楼
得票数 2

我也有同样的问题,我通过进入我的file_version_info文件,使它们不能为空,解决了我的问题。

例子:从这个:

class _LANGANDCODEPAGE extends Struct {
  @Uint16()
  external int? wLanguage;

  @Uint16()
  external int? wCodePage;
}

到这个:

class _LANGANDCODEPAGE extends Struct {
  @Uint16()
  external int wLanguage;

  @Uint16()
  external int wCodePage;
}

你可以在以下网站上找到这个文件

/Users/name/.pub-cache/hosted/pub.dev/package_info_plus_windows-2.1.0/lib/src/file_version_info.dart

我希望这对你有帮助。

Winnie 提问于2023-05-22
#4楼
得票数 1

你可以通过覆盖依赖关系来解决这个问题,把下面的代码放到你的pubspec.yaml中,这样就可以解决你的问题了:

dependency_overrides:
 package_info_plus_windows: 3.0.0
Omar 提问于2023-05-17
Omar 修改于2023-05-17
#5楼
得票数 1

在pubspec.yaml中添加这个,应该可以解决这个问题。

dependency_overrides:
 package_info_plus: ^4.0.1
Gvs Akhil 提问于2023-05-21
#6楼
得票数 1

我也遇到了同样的问题,但在仔细阅读了日志后,我在pub spec文件中加入了这部分内容

dependency_overrides:
    package_info_plus: any

我还需要将firebase/auth的软件包更新为10.9。我运行这个命令 --> pod update Firebase/Auth

CyberHunter 提问于2023-05-27
Gedeon Mutshipayi 修改于2023-05-27
#7楼
得票数 0

我也有同样的问题。

在我的案例中,与flutter_app_version_checker有关。0.3.2版本对旧的package_info_plus_x包有依赖性。

有人已经发布了flutter_app_version_checker的修复程序,但软件包没有发布。

所以我fork了这个 repo,并为我的项目应用修复。

  # from
dependencies:
  http: ^0.13.4
  package_info_plus: ^1.4.2

dev_dependencies:
  flutter_lints: ^1.0.0

  # to
dependencies:
  http: ^0.13.6
  package_info_plus: ^4.0.0

dev_dependencies:
  flutter_lints: ^2.0.1

pubspec.yaml

....
 flutter_app_version_checker:
    git:
      url: git@github.com:kevin-chnp/app_version_checker.git
...
(you can use your own repo)
kehyoung 提问于2023-05-19
#8楼
得票数 0

我在升级flutter后出现了这个错误,只需运行"dart pub upgrade";

Amr Hassan 提问于2023-05-24
#9楼
得票数 0

为了解决这个问题,你将从你的路径中打开file_version_info.dart

../../.pub-cache/hosted/pub.dev/package_info_plus_windows 2.1.0/lib/src/file_version_info.dart

并搜索关于int? wCodePage;int? wLanguage;的信息,然后删除?

Abdalmuneim Mahmoud 提问于2023-06-07
#10楼
得票数 0

我已经为这个错误工作了2天:我的解决方案(但不是最好的解决方案)是更新 "file_version_info.dart "的内容,其中包括:

class _LANGANDCODEPAGE extends Struct {
  @Uint16()
  external int wLanguage;

  @Uint16()
  external int wCodePage;
}

并删除了int?

它是有效的。

Mattia 提问于2023-06-07