wemersonrv

login_page.dart

Nov 18th, 2019
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 3.08 KB | None | 0 0
  1. import 'package:firebase_bloc/app/modules/login/login_bloc.dart';
  2. import 'package:firebase_bloc/app/modules/login/login_module.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:font_awesome_flutter/font_awesome_flutter.dart';
  5.  
  6. class LoginPage extends StatefulWidget {
  7.   final String title;
  8.   const LoginPage({Key key, this.title = "Login"}) : super(key: key);
  9.  
  10.   @override
  11.   _LoginPageState createState() => _LoginPageState();
  12. }
  13.  
  14. class _LoginPageState extends State<LoginPage> {
  15.   @override
  16.   Widget build(BuildContext context) {
  17.     return Material(
  18.       child: Stack(
  19.         fit: StackFit.expand,
  20.         children: <Widget>[
  21.           Image.network(
  22.             "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTgdmgiXDeDj7Osrvbdl1Ppuos_q_uCDIUZims8fBQjFzXwRoxX",
  23.             fit: BoxFit.cover,
  24.           ),
  25.           Container(
  26.             color: Colors.grey[800].withOpacity(0.4),
  27.           ),
  28.           SingleChildScrollView(
  29.             child: _LoginContent(),
  30.           ),
  31.         ],
  32.       ),
  33.     );
  34.   }
  35. }
  36.  
  37. class _LoginContent extends StatelessWidget {
  38.   final LoginBloc bloc = LoginModule.to.bloc<LoginBloc>();
  39.  
  40.   @override
  41.   Widget build(BuildContext context) {
  42.     return Column(
  43.       mainAxisAlignment: MainAxisAlignment.center,
  44.       children: <Widget>[
  45.         FlutterLogo(size: 72),
  46.         Container(height: 120),
  47.         StreamBuilder<bool>(
  48.           stream: bloc.outLoading,
  49.           initialData: false,
  50.           builder: (context, snapshot) {
  51.             return AnimatedCrossFade(
  52.               firstChild: _botoes(context),
  53.               secondChild: Padding(
  54.                 padding: const EdgeInsets.only(top: 110),
  55.                 child: CircularProgressIndicator(),
  56.               ),
  57.               duration: Duration(milliseconds: 500),
  58.               crossFadeState: snapshot.data
  59.                   ? CrossFadeState.showSecond
  60.                   : CrossFadeState.showFirst,
  61.             );
  62.           },
  63.         ),
  64.         TextField(
  65.           onChanged: bloc.phoneIn.add,
  66.           onSubmitted: (String value) => bloc.onClickTelefone(context),
  67.           keyboardType: TextInputType.number,
  68.         ),
  69.       ],
  70.     );
  71.   }
  72. }
  73.  
  74. _botoes(BuildContext context) {
  75.   final LoginBloc bloc = LoginModule.to.bloc<LoginBloc>();
  76.  
  77.   return Column(
  78.     children: <Widget>[
  79.       RaisedButton.icon(
  80.         color: Colors.green,
  81.         textColor: Colors.white,
  82.         icon: Icon(Icons.phone),
  83.         label: Text("Login com telefone"),
  84.         onPressed: () => bloc.onClickTelefone(context),
  85. //        onPressed: () {},
  86.       ),
  87.       RaisedButton.icon(
  88.         color: Colors.red,
  89.         textColor: Colors.white,
  90.         icon: Icon(FontAwesomeIcons.google),
  91.         label: Text("Login com com google"),
  92.         onPressed: () => bloc.onClickGoogle(context),
  93.       ),
  94.       RaisedButton.icon(
  95.         color: Colors.blue,
  96.         textColor: Colors.white,
  97.         icon: Icon(FontAwesomeIcons.facebookF),
  98.         label: Text("Login com facebook"),
  99.         onPressed: () => bloc.onClickFacebook(context),
  100.       ),
  101.     ],
  102.   );
  103. }
Advertisement
Add Comment
Please, Sign In to add comment