Flutter 2:国际空安全库中的问题
Flutter 2: problem in Intl null safety library
我将我的 flutter sdk 升级到 flutter 2.0.0。更新 sdk 后,我几乎将所有库都更改为空安全版本:
environment:
sdk: '>=2.12.0 <3.0.0'
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
cupertino_icons: ^0.1.3
encrypt: ^4.1.0
flutter_hooks: ^0.15.0
flutter_map: ^0.11.0
flutter_password_strength: ^0.1.5
flutter_svg: ^0.18.0
geolocator: ^7.0.1
get: ^3.25.6
get_it: ^6.0.0
injectable: ^1.1.2
local_auth: ^1.1.0
moor_flutter: ^3.1.0
provider: ^5.0.0
shared_preferences: ^2.0.3
supercharged: ^1.12.0
intl: ^0.17.0
更新 运行 dart $ dart migrate
命令后。但它显示了有关 intl 插件的这些问题:
Analyzing project...
[---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/]
5 analysis issues found:
error • 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 • (return_of_invalid_type)
error • 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 • (return_of_invalid_type)
error • Non-nullable instance field 'current' must be initialized at lib/generated/l10n.dart:16:3 • (not_initialized_non_nullable_instance_field)
error • The non-nullable variable 'current' must be initialized at lib/generated/l10n.dart:18:12 • (not_initialized_non_nullable_variable)
error • 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 • (return_of_invalid_type)
The migration tool didn't start, due to analysis errors.
我使用的是最新版本的 intl 吗?我该如何解决?
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.0, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0-rc1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.0)
[✓] VS Code (version 1.53.2)
[✓] Connected device (2 available)
• No issues found!
我遇到了同样的问题。以下是解决此问题的 3 个步骤:
首先,将pubspec.yaml
中的intl
依赖更新为:
国际:0.17.0-nullsafety.2
如果还是不行,再在根目录中添加这2个字段。
dependency_overrides:
国际:0.17.0-nullsafety.2
生成也可以通过 Android Studio 中的插件进行。我使用旧的 (v 0.12),在我更新到 (v 0.14) 后,它开始生成用于本地化的空安全飞镖文件。
我想我踩到了这里的每一块石头。
我将我的 flutter sdk 升级到 flutter 2.0.0。更新 sdk 后,我几乎将所有库都更改为空安全版本:
environment:
sdk: '>=2.12.0 <3.0.0'
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
cupertino_icons: ^0.1.3
encrypt: ^4.1.0
flutter_hooks: ^0.15.0
flutter_map: ^0.11.0
flutter_password_strength: ^0.1.5
flutter_svg: ^0.18.0
geolocator: ^7.0.1
get: ^3.25.6
get_it: ^6.0.0
injectable: ^1.1.2
local_auth: ^1.1.0
moor_flutter: ^3.1.0
provider: ^5.0.0
shared_preferences: ^2.0.3
supercharged: ^1.12.0
intl: ^0.17.0
更新 运行 dart $ dart migrate
命令后。但它显示了有关 intl 插件的这些问题:
Analyzing project...
[---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/]
5 analysis issues found:
error • 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 • (return_of_invalid_type)
error • 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 • (return_of_invalid_type)
error • Non-nullable instance field 'current' must be initialized at lib/generated/l10n.dart:16:3 • (not_initialized_non_nullable_instance_field)
error • The non-nullable variable 'current' must be initialized at lib/generated/l10n.dart:18:12 • (not_initialized_non_nullable_variable)
error • 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 • (return_of_invalid_type)
The migration tool didn't start, due to analysis errors.
我使用的是最新版本的 intl 吗?我该如何解决?
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.0, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0-rc1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.0)
[✓] VS Code (version 1.53.2)
[✓] Connected device (2 available)
• No issues found!
我遇到了同样的问题。以下是解决此问题的 3 个步骤:
首先,将
pubspec.yaml
中的intl
依赖更新为:国际:0.17.0-nullsafety.2
如果还是不行,再在根目录中添加这2个字段。
dependency_overrides: 国际:0.17.0-nullsafety.2
生成也可以通过 Android Studio 中的插件进行。我使用旧的 (v 0.12),在我更新到 (v 0.14) 后,它开始生成用于本地化的空安全飞镖文件。
我想我踩到了这里的每一块石头。