Как я могу показать экран spla sh, пока приложение проверяет состояние в приложении флаттера - PullRequest
1 голос
/ 27 апреля 2020

В моем приложении флаттера я проверяю, вошел ли пользователь в систему. Проблема со мной в том, что даже если вошел пользователь, он некоторое время показывает страницу входа, а затем переходит на домашнюю страницу. Как я могу это остановить?

1 Ответ

1 голос
/ 27 апреля 2020

Вы должны убедиться, что выполняете эту инициализацию перед вызовом runApp(). Объявите ваш initialRoute в переменной, чтобы вы могли изменить его в зависимости от того, вошел ли пользователь в систему или нет. Также вы должны вызвать WidgetsFlutterBinding.ensureInitialized(), чтобы иметь возможность дождаться окончания обработки, и объявить ваш метод main как async.

Примерно так:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  var initialRoute = 'login';

  var isUserLoggedIn = await User.IsUserLoggedIn();

  if (isUserLoggedIn) {
    initialRoute = 'home';
  }

  runApp(MyApp(initialRoute: initialRoute));
}

class MyApp extends StatelessWidget {
  final String initialRoute;

  MyApp({@required this.initialRoute});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      initialRoute: initialRoute,
      routes: {
        'login': (context) => LoginPage(),
        'home': (context) => HomePage(),
      }
    );
  }
}

Все это происходит до того, как вызов runApp будет выполнен, пока виден spla sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...