Untitled
unknown
dart
2 years ago
4.3 kB
3
Indexable
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; class HomePage extends StatelessWidget { const HomePage({super.key}); @override Widget build(BuildContext context) { final user = FirebaseAuth.instance.currentUser; return Scaffold( appBar: AppBar( title: const Text('Página Principal'), ), body: Padding( padding: const EdgeInsets.all(32), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Text( 'Logado como', style: TextStyle(fontSize: 16), ), const SizedBox(height: 8), Text( user!.email!, style: const TextStyle(fontSize: 20), ), const SizedBox(height: 40), ElevatedButton.icon( style: ElevatedButton.styleFrom( minimumSize: const Size.fromHeight(50), ), icon: const Icon(Icons.arrow_back, size: 32), label: const Text( 'Deslogar', style: TextStyle(fontSize: 24), ), onPressed: () => FirebaseAuth.instance.signOut(), ), ], ), ), ); } } class LoginWidget extends StatefulWidget { const LoginWidget({super.key}); @override _LoginWidgetState createState() => _LoginWidgetState(); } class _LoginWidgetState extends State<LoginWidget> { final emailController = TextEditingController(); final passwordController = TextEditingController(); @override void dispose() { emailController.dispose(); passwordController.dispose(); super.dispose(); } @override Widget build(BuildContext context) => SingleChildScrollView( padding: const EdgeInsets.all(16), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const SizedBox(height: 40), TextField( controller: emailController, cursorColor: Colors.white, textInputAction: TextInputAction.next, decoration: const InputDecoration(labelText: 'Email'), ), const SizedBox(height: 4), TextField( controller: passwordController, textInputAction: TextInputAction.done, decoration: const InputDecoration(labelText: 'Senha'), obscureText: true, ), const SizedBox(height: 20), ElevatedButton.icon( style: ElevatedButton.styleFrom( minimumSize: const Size.fromHeight(50), ), icon: const Icon(Icons.lock_open, size: 32), label: const Text( 'Logar', style: TextStyle(fontSize: 24), ), onPressed: signIn, ), ], ), ); Future signIn() async { await FirebaseAuth.instance.signInWithEmailAndPassword( email: emailController.text.trim(), password: passwordController.text.trim(), ); } } Future main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); static final String title = 'Tradeit Auth Prototype'; // This widget is the root of your application. @override Widget build(BuildContext context) => MaterialApp( debugShowCheckedModeBanner: false, title: title, theme: ThemeData.dark().copyWith( colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.grey) .copyWith(secondary: Colors.green), ), home: MainPage(), ); } class MainPage extends StatelessWidget { const MainPage({super.key}); @override Widget build(BuildContext context) => Scaffold( body: StreamBuilder<User?>( stream: FirebaseAuth.instance.authStateChanges(), builder: (context, snapshot) { if (snapshot.hasData) { return HomePage(); } else { return LoginWidget(); } }, ), ); }
Editor is loading...