Flutter null- миграция безопасности, застрявшая на ошибках «именованный параметр не определен»

#flutter #dart #dart-null-safety

#флаттер #dart #дротик-ноль-безопасность

Вопрос:

Я пытаюсь перенести один из моих проектов в null-safety, следуя этому руководству и этому видео, но я застрял где-то между обновлением моих зависимостей и просмотром предложений по миграции в веб-интерфейсе. Мне удалось обновить свой проект с Flutter 1 до Flutter 2, чтобы обновить все зависимости до их нулевых версий, за исключением build_runner как зависимости разработчика, но, по-видимому, мы можем игнорировать это. И теперь, когда я бегу dart migrate , это то, что я получаю в терминале:

 Analyzing project...
[---------------------------------------------------------------------------------------------------------------------------------------------------------------]
23 analysis issues found:
  error • The named parameter 'email' isn't defined at lib/screens/email_screen.dart:38:11 • (undefined_named_parameter)
  error • The named parameter 'password' isn't defined at lib/screens/email_screen.dart:39:11 • (undefined_named_parameter)
  error • The named parameter 'errorText' isn't defined at lib/screens/email_screen.dart:124:29 • (undefined_named_parameter)
  error • The named parameter 'errorText' isn't defined at lib/screens/email_screen.dart:128:29 • (undefined_named_parameter)
  error • The named parameter 'errorText' isn't defined at lib/screens/first_name_screen.dart:112:27 • (undefined_named_parameter)
  error • The named parameter 'data' isn't defined at lib/screens/onboarding_screen.dart:47:17 • (undefined_named_parameter)
  error • The named parameter 'styleSheet' isn't defined at lib/screens/onboarding_screen.dart:49:17 • (undefined_named_parameter)
  error • The named parameter 'onTapLink' isn't defined at lib/screens/onboarding_screen.dart:59:17 • (undefined_named_parameter)
  error • The named parameter 'verificationId' isn't defined at lib/screens/phone_code_screen.dart:77:9 • (undefined_named_parameter)
  error • The named parameter 'smsCode' isn't defined at lib/screens/phone_code_screen.dart:78:9 • (undefined_named_parameter)
  error • The named parameter 'phoneNumber' isn't defined at lib/screens/phone_code_screen.dart:149:7 • (undefined_named_parameter)
  error • The named parameter 'verificationCompleted' isn't defined at lib/screens/phone_code_screen.dart:150:7 • (undefined_named_parameter)
  error • The named parameter 'verificationFailed' isn't defined at lib/screens/phone_code_screen.dart:156:7 • (undefined_named_parameter)
  error • The named parameter 'codeSent' isn't defined at lib/screens/phone_code_screen.dart:159:7 • (undefined_named_parameter)
  error • The named parameter 'codeAutoRetrievalTimeout' isn't defined at lib/screens/phone_code_screen.dart:166:7 • (undefined_named_parameter)
  error • The named parameter 'forceResendingToken' isn't defined at lib/screens/phone_code_screen.dart:171:7 • (undefined_named_parameter)
  error • The named parameter 'errorText' isn't defined at lib/screens/phone_code_screen.dart:288:31 • (undefined_named_parameter)
  error • The named parameter 'errorText' isn't defined at lib/screens/phone_code_screen.dart:293:31 • (undefined_named_parameter)
  error • The named parameter 'phoneNumber' isn't defined at lib/screens/phone_number_screen.dart:49:9 • (undefined_named_parameter)
  error • The named parameter 'verificationCompleted' isn't defined at lib/screens/phone_number_screen.dart:50:9 • (undefined_named_parameter)
  error • The named parameter 'verificationFailed' isn't defined at lib/screens/phone_number_screen.dart:57:9 • (undefined_named_parameter)
  error • The named parameter 'codeSent' isn't defined at lib/screens/phone_number_screen.dart:92:9 • (undefined_named_parameter)
  error • The named parameter 'codeAutoRetrievalTimeout' isn't defined at lib/screens/phone_number_screen.dart:102:9 • (undefined_named_parameter)

Note: analysis errors will result in erroneous migration suggestions.

Please fix the analysis issues (or, force generation of migration suggestions by re-running with --ignore-errors).
 

Теперь, если я рассмотрю первые две ошибки в качестве примера, вот строки кода, на которые они указывают:

 final emailCredential = EmailAuthProvider.credential(
          email: _emailAddress.trim(),
          password: randomPassword,
        );
 

Который вызывает этот фрагмент кода из Firebase Auth:

 /// Creates a new [EmailAuthCredential] from a given email and password.
  static AuthCredential credential({
    required String email,
    required String password,
  }) {
    return EmailAuthCredential._credential(email, password);
  }
 

И, как вы можете видеть, оба именованных параметра четко определены, так что я действительно не понимаю, в чем проблема. И я проверил все остальные ошибки, и они те же: все именованные параметры существуют и фактически определены.

Что я упускаю из виду? Могу ли я безопасно игнорировать эти ошибки и продолжить остальную часть миграции?

Ответ №1:

Проблема была связана с устаревшей установкой Dart, поскольку я не использовал Dart, установленный с Flutter. После обновления Dart до последней версии проблема была решена.

Комментарии:

1. Меня это тоже достало, но я использовал версию, поставляемую с Flutter, а не системную версию: /path/to/fluttersdk/bin/cache/dart-sdk/dart migrate .