firebase_auth_router 1.0.3
firebase_auth_router: ^1.0.3 copied to clipboard
Navigate between unauthenticated and an authenticated screen easily with Firebase Auth.
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_auth_router/firebase_auth_router.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Firebase Auth Router Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: SafeArea(
child: FirebaseAuthRouter(
firebaseAuth: FirebaseAuth.instance,
home: const HomePage(),
loginPage: const LoginPage(),
loadingWidget: const LoadingPage(),
),
),
);
}
}
class LoginPage extends StatefulWidget {
const LoginPage({super.key});
@override
LoginPageState createState() => LoginPageState();
}
class LoginPageState extends State<LoginPage> {
late String email = 'testuser@test.com';
late String password = 'testuser';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Login'),
),
body: Center(
child: Form(
autovalidateMode: AutovalidateMode.onUnfocus,
child: Column(
children: [
TextFormField(
key: const Key('email'),
initialValue: email,
onChanged: (value) {
email = value;
},
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter some text';
}
return null;
},
decoration: const InputDecoration(
labelText: 'Email',
),
),
TextFormField(
key: const Key('password'),
initialValue: password,
obscureText: true,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter some text';
}
return null;
},
decoration: const InputDecoration(
labelText: 'Password',
),
onChanged: (value) {
password = value;
},
),
ElevatedButton(
onPressed: () {
FirebaseAuth.instance.signInWithEmailAndPassword(
email: email,
password: password,
);
},
child: const Text('Login'),
),
],
),
),
),
);
}
}
class LoadingPage extends StatelessWidget {
const LoadingPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Loading Page'),
),
body: const Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Loading'),
],
),
),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Home Page'),
),
body: Center(
child: ElevatedButton(
onPressed: FirebaseAuth.instance.signOut,
child: const Text('Sign out'),
),
),
);
}
}
copied to clipboard