Untitled
unknown
dart
3 years ago
4.3 kB
5
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...