Como colocar um widget em uma condição?

romka_rish

Eu quero criar uma verificação de autorização para exibir telas diferentes dependendo se o usuário está logado. Quando o usuário está logado, então HomeScreen() deve ser exibida para ele. E quando não estiver logado, então a página SignIn, cujo código está anexado abaixo Como colocar o widget com a tela corretamente?

class SignInScreen extends StatefulWidget {
  const SignInScreen({Key? key}) : super(key: key);

  @override
  _SignInScreenState createState() => _SignInScreenState();
}

class _SignInScreenState extends State<SignInScreen> {
  TextEditingController _passwordTextController = TextEditingController();
  TextEditingController _emailTextController = TextEditingController();
  late StreamSubscription<User?> user;
  void initState() {
    super.initState();
    user = FirebaseAuth.instance.authStateChanges().listen((user) {
      if(user == null) {

      }
    });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        width: MediaQuery.of(context).size.width,
        height: MediaQuery.of(context).size.height,
        decoration: BoxDecoration(
            gradient: LinearGradient(colors: [
              hexStringToColor("#a40606"),
              hexStringToColor("#d98324"),
            ], begin: Alignment.topCenter, end: Alignment.bottomCenter)),
        child: SingleChildScrollView(
          child: Padding(
            padding: EdgeInsets.fromLTRB(
                20, MediaQuery.of(context).size.height * 0.2, 20, 0),
            child: Column(
              children: <Widget>[
                logoWidget("images/news_icon.png"),
                const SizedBox(
                  height: 30,
                ),
                reusableTextField("Enter UserName", Icons.person_outline, false,
                    _emailTextController),
                const SizedBox(
                  height: 20,
                ),
                reusableTextField("Enter Password", Icons.lock_outline, true,
                    _passwordTextController),
                const SizedBox(
                  height: 5,
                ),
                forgetPassword(context),
                firebaseUIButton(context, "Sign In", () {
                  FirebaseAuth.instance
                      .signInWithEmailAndPassword(
                      email: _emailTextController.text,
                      password: _passwordTextController.text)
                      .then((value) {
                    Navigator.push(context,
                        MaterialPageRoute(builder: (context) => HomeScreen()));
                  }).onError((error, stackTrace) {
                    print("Error ${error.toString()}");
                  });
                }),
                signUpOption()
              ],
            ),
          ),
        ),
      ),
    );
  }

Kei eu acredito

Vou apenas assumir que você já tem uma tela inicial, nessa tela você pode colocar a condição de navegação para HomeScreen ou SignInScreen em seu initState().

void initState() {
    super.initState();
    FirebaseAuth.instance.authStateChanges().listen((User? user) {
      if (user == null) {
        Navigator.push(
           context,
           MaterialPageRoute(builder: (context) => const SignInScreen()),
        );
      } else {
        Navigator.push(
           context,
           MaterialPageRoute(builder: (context) => const HomeScreen()),
        );
      }
    });
  }

Esta solução mostra apenas como navegar para uma tela específica com base no status do usuário. O que eu recomendo é criar um arquivo de serviço onde você vai colocar a lógica necessária para o Flutter Auth. Aqui está um link que será útil: https://www.youtube.com/watch?v=mZYuuGAIwe4

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como colocar uma condição em regex em python?

Como faço para renderizar um widget com base em uma condição de vibração?

Como testar uma condição em um dataframe existente e colocar os resultados em uma nova coluna?

Como colocar a condição if com 'throw' em uma busca ... then API

Como destruir um widget de botão que foi colocado em uma condição if? TkinterGenericName

Como colocar um cursor em uma determinada posição de estilo de acordo com a condição if-else

Como colocar uma entrada em um mapa?

Como colocar uma tabela em um div

Como colocar uma string em um array

Como colocar um botão em uma coordenada específica em uma visualização de imagem

Como faço para colocar uma condição em uma coluna específica para matlab?

Como colocar uma condição no NavigationLink? SWIFTUI

Como colocar várias fontes em um widget

Como faço para colocar uma condição na instrução select em T-SQL

Como adicionar uma classe a um div em uma condição?

usando uma matriz como uma condição em um loop if

Como faço para colocar 3 condições em uma instrução if. on deve ser verdadeiro, então um dos próximos dois deve ser verdadeiro

Como usar um manipulador de conclusão para colocar uma imagem em uma visualização SwiftUI

Como colocar em cascata um número desconhecido de condições no Spark sem fazer um loop em cada condição

Como construir uma condição em um loop em Python?

Como colocar um texto como uma sobreposição em uma imagem alinhada verticalmente no canto superior esquerdo em um div

Como colocar dois gráficos sparkline de flutter em um só lugar, por exemplo, em um widget de cartão

Prolog. Em uma consulta, como colocar uma condição em uma variável que não quero nos resultados?

tentando colocar um <div> 'led' em uma barra de navegação como um ícone

tentando colocar um <div> 'led' em uma barra de navegação como um ícone

JavaFX - Colocar um controle (como um botão) em uma TableCell?

Como colocar a condição no próximo botão em um aplicativo HTML / Js?

Como colocar condição para a tarefa em um aplicativo de reação?

Como fazer um loop em duas colunas e colocar o resultado em uma coluna?

TOP lista

quentelabel

Arquivo