Ad

Flutter 2: Problem In Intl Null Safety Library

- 1 answer

I upgrade my flutter sdk to flutter 2.0.0. After updating sdk I have changed almost all libraries to null safety version:

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

after updating I run dart $ dart migrate command. But It shows these problem about intl plugin:

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.

enter image description here

enter image description here

I am using last version of intl ? How can I fix that?

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!
Ad

Answer

I had the same issue. Here are 3 steps to troubleshoot this:

  1. First of all, update intl dependency in pubspec.yaml to this:

    intl: 0.17.0-nullsafety.2

  2. If still doesn't work, then add these 2 fields in the root.

    dependency_overrides: intl: 0.17.0-nullsafety.2

  3. Generation also can happen via plugin in Android Studio. I used old one (v 0.12) and after I updated to (v 0.14) it started to generate null safety dart files for localization.

I think I stepped on every rock here.

Ad
source: stackoverflow.com
Ad