Flutter 2:Intl null 安全库中的问题

say*_*bir 6 migration flutter dart-null-safety

我将我的 flutter sdk 升级到 flutter 2.0.0。更新 sdk 后,我已将几乎所有库更改为 null 安全版本:

\n
environment:\n  sdk: \'>=2.12.0 <3.0.0\'\n\ndependencies:\n  flutter:\n    sdk: flutter\n  flutter_localizations:\n    sdk: flutter \n  cupertino_icons: ^0.1.3\n  encrypt: ^4.1.0\n  flutter_hooks: ^0.15.0\n  flutter_map: ^0.11.0\n  flutter_password_strength: ^0.1.5\n  flutter_svg: ^0.18.0\n  geolocator: ^7.0.1\n  get: ^3.25.6\n  get_it: ^6.0.0\n  injectable: ^1.1.2\n  local_auth: ^1.1.0\n  moor_flutter: ^3.1.0\n  provider: ^5.0.0\n  shared_preferences: ^2.0.3\n  supercharged: ^1.12.0\n  intl: ^0.17.0\n
Run Code Online (Sandbox Code Playgroud)\n

更新后我运行 dart$ dart migrate命令。但它显示了有关 intl 插件的这些问题:

\n
Analyzing project...\n[---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/]\n5 analysis issues found:\n  error \xe2\x80\xa2 A value of type \'Null\' can\'t be returned from the function \'_findExact\' because it has a return type of \'MessageLookupByLibrary\' at lib/generated/intl/messages_all.dart:34:14 \xe2\x80\xa2 (return_of_invalid_type)\n  error \xe2\x80\xa2 A value of type \'Null\' can\'t be returned from the function \'_findGeneratedMessagesFor\' because it has a return type of \'MessageLookupByLibrary\' at lib/generated/intl/messages_all.dart:65:36 \xe2\x80\xa2 (return_of_invalid_type)\n  error \xe2\x80\xa2 Non-nullable instance field \'current\' must be initialized at lib/generated/l10n.dart:16:3 \xe2\x80\xa2 (not_initialized_non_nullable_instance_field)\n  error \xe2\x80\xa2 The non-nullable variable \'current\' must be initialized at lib/generated/l10n.dart:18:12 \xe2\x80\xa2 (not_initialized_non_nullable_variable)\n  error \xe2\x80\xa2 A value of type \'S?\' can\'t be returned from the method \'of\' because it has a return type of \'S\' at lib/generated/l10n.dart:35:12 \xe2\x80\xa2 (return_of_invalid_type)\n\nThe migration tool didn\'t start, due to analysis errors.\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

在此输入图像描述

\n

我正在使用最新版本的 intl ?我该如何解决这个问题?

\n
Doctor summary (to see all details, run flutter doctor -v):\n[\xe2\x9c\x93] Flutter (Channel stable, 2.0.0, on Linux, locale en_US.UTF-8)\n[\xe2\x9c\x93] Android toolchain - develop for Android devices (Android SDK version 30.0.0-rc1)\n[\xe2\x9c\x93] Chrome - develop for the web\n[\xe2\x9c\x93] Android Studio (version 4.0)\n[\xe2\x9c\x93] VS Code (version 1.53.2)\n[\xe2\x9c\x93] Connected device (2 available)\n\n\xe2\x80\xa2 No issues found!\n
Run Code Online (Sandbox Code Playgroud)\n

Kon*_*rev 4

我遇到过同样的问题。以下是解决此问题的 3 个步骤:

  1. 首先,将intl依赖项更新为pubspec.yaml:

    国际:0.17.0-nullsafety.2

  2. 如果仍然不起作用,则在根目录中添加这两个字段。

    dependency_overrides:intl:0.17.0-nullsafety.2

  3. 生成也可以通过 Android Studio 中的插件进行。我使用旧版本(v 0.12),更新到(v 0.14)后,它开始生成用于本地化的空安全 dart 文件。

我想我踩过这里的每一块岩石。