Навигация не работает при сбое приложения выпуска

#flutter #flutter-navigation

#флаттер #flutter-навигация

Вопрос:

Я хочу перейти с экрана входа в систему на главный экран в моем приложении flutter. Мое приложение работает нормально при его тестировании на эмуляторе или виртуальном устройстве, но при создании сборки apk-версии навигация к дому не работает. На странице регистрации или входа в систему навигация не работает. Мой основной файл:

  void main() async {
     WidgetsFlutterBinding.ensureInitialized();
     SharedPreferences prefs = await SharedPreferences.getInstance();
      String isLogin = prefs.getString('navigateToHome');
      prefs.setString('is_mechanic', '1');
      Widget _defaultHome = new LoginUI();
      // isLogin = 'false';
      if (isLogin == 'true') {
        //If the user is an loggedin
        print('home page');
        _defaultHome = new Home();
      } else {
        // If the user is not  loggedin
        print('LoginUI page');
        _defaultHome = new LoginUI();
        
      }
      runApp(MaterialApp(
        title: 'Navigation Basics',
        //navigateToHome
        // home: FirstRoute(), //android device
        home: _defaultHome,
        debugShowCheckedModeBanner: false,
        theme: ThemeData(
          primaryColor: Colors.black,
        ),
      )
      );
    }
  

Страница входа / регистрации, с которой я хочу перейти на главную страницу:

 Future<loginModel> signUpUserOrMechanic(String email, String pass,
        String cellPhone, String name, String workshop) async {
      final prefs = await SharedPreferences.getInstance();
      var userOrMechanic = prefs.getString('is_mechanic');
      var nick = name.substring(0, 2);
      var uri = new Uri.http(url, "/API/Signup/get", {
        "Email": email,
        "Password": pass,
        "PhoneNumber": cellPhone,
        "ismechanic": userOrMechanic,
        "Name": name,
        "WorkshopAddress": workshop,
        "NickName": nick,
        "Latitude": '',
        "Longitude": '',
        "WorkshopName": '',
      });
      
      final response = await http.get(uri);
      if (response.statusCode == 200) {
        final jsonObj = jsonDecode(response.body);
        var responseObject = jsonDecode(response.body);
        var user = loginModel.fromJson(responseObject);
    // print('${user.clientOrMechanic} is ${user.alias}');
        // print('${user.clientOrMechanic} is awesome');
        prefs.setString('phone_no', cellPhone);
        if (user.clientOrMechanic == "Already Registered") {
          Utility.getInstance().showAlertDialog(
              navigatorKey.currentState.overlay.context,
              'System Alert!',
              'You are already registered.Thanks!');
    
        } else if (user.clientOrMechanic == "Registration Successful") {
          prefs.setString('navigateToHome', 'true');
          navigatorKey.currentState.push(MaterialPageRoute(
            builder: (context) => Home(),
          ));
          // Get.to(Home());
        } else {
    
          Utility.getInstance().showAlertDialog(
              navigatorKey.currentState.overlay.context,
              'Error!',
              'Failed to Register. Please try again or contact to support. Thanks!');
    
        }
    
        return loginModel.fromJson(json.decode(response.body));
      } else {
        // If the server did not return a 201 CREATED response,
        // then throw an exception.
        Utility.getInstance().showAlertDialog(
            navigatorKey.currentState.overlay.context,
            'Error!',
            'Failed to Register.Please try again.Thanks!');
        throw Exception('Failed to login.');
      }
    }
  

Любая помощь?

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

1. попробуйте запустить его в режиме профиля с журналами при изменении экрана

2. Вы указали разрешение на доступ в Интернет в своем манифесте?

3. нет, я не добавил, связаны ли эти интернет-разрешения с навигацией??

Ответ №1:

введите описание изображения здесь

  1. Вы дали разрешение на доступ в Интернет в своем приложении?