#dart #flutter-provider #dart-null-safety
Вопрос:
у меня ошибка в приложениях, в которых приложение не может войти в систему, а затем приложения разбились с ошибкой
E/flutter (19441): [ОШИБКА:flutter/lib/ui/ui_dart_state.cc(199)] Необработанное исключение: Оператор проверки Null, используемый для нулевого значения E/flutter (19441): #0 ctx (пакет:dsbills/common/navigation.dart:4:42) E/flutter (19441): #1 ctx (пакет:dsbills/common/navigation.dart) E/flutter (19441): #2 LoginProvider.submitLogin (пакет:dsbills/провайдер/login_provider.dart:199:27) E/flutter (19441): E/flutter (19441): #3 _LoginPageState.сборка.. (пакет:dsbills/пользовательский интерфейс/аутентификация/логин.dart:310:34) E/flutter (19441):
и это то, что я нажимаю, когда получаю эту ошибку при входе в систему.броситься в
действие = () асинхронно { FocusScope.of(контекст).расфокусировать(); поставщик ожидания.submitLogin(
'Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( child: Consumer2lt;LoginProvider, FormValidateProvidergt;( builder: (context, provider, validate, _) { if (provider.state == ResultState.Loading) { return Center( child: CircularProgressIndicator( color: primaryForm), ); } else { Function action; if (validate.instituisi.error != null) { action = () { FocusScope.of(context) .requestFocus(_institusiId); ScaffoldMessenger.of(context) .removeCurrentSnackBar(); ScaffoldMessenger.of(context) .showSnackBar(SnackBar( content: Text(validate.instituisi.error!), backgroundColor: colorButton, )); }; } else if (validate.username.error != null) { action = () { FocusScope.of(context) .requestFocus(_username); ScaffoldMessenger.of(context) .removeCurrentSnackBar(); ScaffoldMessenger.of(context) .showSnackBar(SnackBar( content: Text(validate.username.error!), backgroundColor: colorButton, )); }; } else if (validate.password.error != null) { action = () { FocusScope.of(context) .requestFocus(_password); ScaffoldMessenger.of(context) .removeCurrentSnackBar(); ScaffoldMessenger.of(context) .showSnackBar(SnackBar( content: Text(validate.password.error!), backgroundColor: colorButton, )); }; } else { action = () async { FocusScope.of(context).unfocus(); await provider.submitLogin( _institusiIdController.text.toUpperCase(), _usernameController.text.toUpperCase(), _passwordController.text, VarSession.authToken, ); }; }'
это ошибка в login_provider.dart
} else { //Tidak ada Koneksi _errMessage = 'Internet not available'; Utility.printToConsole(_errMessage, DEBUG_PRINT); _state = ResultState.Error; notifyListeners(); Dialogs.noConnect(ctx, errMessage!); return _errMessage; } } catch (e) { _state = ResultState.Error; notifyListeners(); _errMessage = 'Error -gt; $e'; Dialogs.errorDialog(ctx, _errMessage!); return _errMessage; }
then the error at navigation.dart
final GlobalKeylt;NavigatorStategt; myNavigatorKey = GlobalKeylt;NavigatorStategt;(); final ctx = myNavigatorKey.currentContext!; class Navigation { static pushNoData(String routeName) { myNavigatorKey.currentState!.pushNamed(routeName); } static pushWithData(String routeName, Object arguments) { myNavigatorKey.currentState!.pushNamed(routeName, arguments: arguments); } static pushReplaceNoData(String routeName) { myNavigatorKey.currentState!.pushReplacementNamed(routeName); }
в коде нет ошибки, но когда я запускаю приложение, оно внезапно разбивается