Как проверить сессию пользователя при флаттере и прохождении маршрутов? - PullRequest
1 голос
/ 26 мая 2020

Я использую приведенный ниже код во флаттере для запуска приложения, оно работает с маршрутами, но я хочу, чтобы если пользователь уже вошел в систему, он должен перейти на HomePage(), иначе на LandingPage, но как я реализовано не получилось. Пожалуйста, подскажите, как это можно сделать?

Я использую аутентификацию Firebase.

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Social',
      debugShowCheckedModeBanner: false,
      theme: buildThemeData(),
      onGenerateRoute: router.generateRoute,
      initialRoute: landingViewRoute,
      home: _handleAuth(),
    );
  }

  Widget _handleAuth() {
    return StreamBuilder<FirebaseUser>(
      stream: FirebaseAuth.instance.onAuthStateChanged,
      builder: (BuildContext context, snapshot) {
        return (!snapshot.hasData)
            ? HomePage()
            : LandingPage();
      },
    );
  }
}

1 Ответ

1 голос
/ 26 мая 2020
StreamBuilder(
         stream: auth.onAuthChange,
         builder: (BuildContext context,AsyncSnapshot snapshot){
        if(snapshot.connectionState==ConnectionState.active){
          User user =snapshot.data;

          if(user==null){
            return AuthOptions();
          }

          else{

                      return ClientDashBoard();

                }
      return Center(child: CircularProgressIndicator(valueColor: AlwaysStoppedAnimation(Colors.pinkAccent),));
            });
          }
        }
        if(snapshot.hasError){
          return Center(child: Text(snapshot.error),);
        }
        return Center(child: CircularProgressIndicator(valueColor: AlwaysStoppedAnimation(Colors.pinkAccent),),);

это то, что я использовал в своем приложении для аутентификации firebase.

используйте connectionStatus в authStateChange FirebaseAuth, потому что, если данные равны нулю, snapshot.hasData не вызывается.

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