Flutter como Exibir um Dialog?

0 respostas
mobile
C

Pessoal, sou novato no flutter, gos taria de saber como faço para exibir um dialog quando entrar no primeiro if da minha condição?

void submit() async{

    final login = _loginController.value;
    final password = _passwordController.value;
    Map data = {
      'login':login,
      'senha':password
    };

    const url = "http://192.168.0.101:2020/RIF/WsAutenticar.rule?sys=RIF";
    var body = json.encode(data);

    var response = await http.post(url,
        headers: {"Content-Type": "application/json", "accept" : "application/json",},
        body: body
    );
    if(json.decode(response.body)["error"]){
      _stateController.add(LoginState.FAIL);
    // print(json.decode(response.body)["error"]);
    }else {
      _stateController.add(LoginState.SUCCESS);
     // print(json.decode(response.body)["error"]);

      return json.decode(response.body)["message"];
    }


  }




-----------------O código abaixo é onde renderizo a tela de login--------------
import 'package:app_rifas/blocs/login_bloc.dart';
import 'package:app_rifas/screens/home_screen.dart';
import 'package:app_rifas/widgets/input_field.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
//StatefulWidget quando tiver modificação na tela o teclado irá subir com a tela de login se adapitando ao teclado

class LoginScreen extends StatefulWidget {
  @override
  __LoginScreenState createState() => __LoginScreenState();
}

class __LoginScreenState extends State<LoginScreen> {

  final _loginBloc = LoginBloc();
  @override
  Widget build(BuildContext context) {
    Widget _buildDrawerBack() => Container(
        decoration: BoxDecoration(
          gradient: LinearGradient(
              colors: [
                Color.fromARGB(255, 211, 118, 138),
                Color.fromARGB(255, 253, 181, 168),
              ],
              begin: Alignment.topCenter,
              end: Alignment.bottomCenter
          ),
        )
    );

    @override
    void iniState(){
      super.initState();
      _loginBloc.outState.listen((state) {
        switch(state){
          case LoginState.SUCCESS:
            Navigator.of(context).pushReplacement(
              MaterialPageRoute(builder: (context)=>HomeScreen())
            );
            break;
            case LoginState.FAIL:
              showDialog(context: context, builder: (context)=>AlertDialog(
              title: Text('Erro'),
              content: Text("erroooooooo"),
        ));
              break;
          case LoginState.LOADING:
          case LoginState.IDLE:
        }
      });
    }
    return Scaffold(

        body: StreamBuilder<LoginState>(
          stream: _loginBloc.outState,
         // initialData: LoginState.LOADING,
          builder: (context, snapshot){

            print(snapshot.data);
            switch(snapshot.data){
             // case LoginState.LOADING:
                 //   return Center(child: CircularProgressIndicator (valueColor: AlwaysStoppedAnimation(Colors.pinkAccent),),);
              case LoginState.FAIL:
              case LoginState.SUCCESS:
            }
            return Stack(//permitir rolar a tela quando aparecer o teclado
              alignment: Alignment.center,
              children: <Widget>[
                _buildDrawerBack(),
                Container(),
                SingleChildScrollView(
                    child:Container(//definindo a margem pro conteúdo.
                      margin:EdgeInsets.all(16),
                      child:Column(
                        crossAxisAlignment: CrossAxisAlignment.stretch, //CrossAxisAlignment irá esticar tudo na horizontal
                        children: <Widget>[
                          Icon(
                              Icons.store_mall_directory,
                              color: Colors.blue,
                              size:160
                          ),
                          InputField(
                            icon: Icons.person_outline,
                            hint: "Usuário",
                            obscure: false,
                            stream: _loginBloc.outLogin,
                            onChanged: _loginBloc.changeLogin,
                          ),
                          InputField(
                            icon:Icons.lock_outline,
                            hint:"Senha",
                            obscure: true,
                            stream: _loginBloc.outPassword,
                            onChanged: _loginBloc.changePassword,
                          ),
                          SizedBox(height:32,),
                          SizedBox( // coloquei o RaisedButton para o butão ficar com uma altura de 50
                            height: 50,
                            child: RaisedButton(
                              color: Colors.blue,
                              child: Text("Entrar"),
                              onPressed: _loginBloc.submit,
                              textColor: Colors.white,
                            ),
                          )
                        ],
                      ),
                    )
                )
              ],
            );
          },
        )
    );
  }

}
Criado 5 de agosto de 2020
Respostas 0
Participantes 1