Автоматизация Flutter и Firebase c вход после создания аккаунта - PullRequest
0 голосов
/ 25 февраля 2020

Я уже создал функцию, которая позволяет мне создавать учетные записи, используя электронную почту и пароль, с помощью встроенного метода firebase createUserWithEmailandPassword(), но сейчас я думаю об автоматическом входе в систему пользователя после создания учетной записи. Я много искал и не нашел решения, задавался вопросом, знает ли кто-нибудь, возможно ли это или нет? Большое вам спасибо

Ответы [ 2 ]

3 голосов
/ 25 февраля 2020

Если пользователь уже вошел в систему, то вы можете сделать следующее:

    FirebaseAuth.instance.currentUser().then((res) {
      print(res);
      if (res != null) {
        Navigator.pushReplacement(
          context,
          MaterialPageRoute(builder: (context) => HomePage()),
        );
      }
      else
      {
        Navigator.push(
          context,
          MaterialPageRoute(builder: (context) => SignInPage()),
        );
      }

currentUser проверит, вошел ли пользователь в систему, и автоматически переведет пользователя на * 1005. * экран.

0 голосов
/ 25 февраля 2020

создать userApi.dart

Future<FirebaseUser> getCurrentUser() async {
FirebaseUser user = await FirebaseAuth.instance.currentUser();

if (user != null) {
  return user;
} else {
  return null;
}
}

и в main.dart

class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
Widget home;

APIs().usersAPI.getCurrentUser().then((u) {
  if (u == null) {
    print('USER IS NULL');
    setState(() {
   home = WelcomePage();
});
  } else {
    print('USER IS NOT NULL');
    setState(() {
   home = FeedPage();
});
  }
});

return MaterialApp(
  title: "Your Title",
  debugShowCheckedModeBanner: false,
  home: FutureBuilder<FirebaseUser>(
     future: APIs().usersAPI.getCurrentUser(),
     builder: (BuildContext context, AsyncSnapshot<FirebaseUser> snapshot) {

        switch (snapshot.connectionState) {
            case ConnectionState.none:
            case ConnectionState.waiting: 
               return CircularProgressIndicator();
            default: 
               if (snapshot.hasError)
                  return Text('Error: ${snapshot.error}');
               else
                 if(snapshot.data == null)
                    return WelcomePage();
                 else 
                    return FeedPage();
        }

     }
  ),
  routes: {
    '/login' : (context) => new LoginPage(),
    '/feed' : (context) => new FeedPage(),
  },
);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...