Skip to content

Instantly share code, notes, and snippets.

@itsatifsiddiqui
Last active June 24, 2019 15:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save itsatifsiddiqui/b8a8261e46d4540d7a5f93332ae79344 to your computer and use it in GitHub Desktop.
Save itsatifsiddiqui/b8a8261e46d4540d7a5f93332ae79344 to your computer and use it in GitHub Desktop.
MAIN FILE
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:providerlogin/login_page.dart';
import 'package:providerlogin/model/user_repository.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.red,
),
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
builder: (_) => UserRepository.instance(),
child: Consumer(
builder: (context, UserRepository user, _) {
switch (user.status) {
case Status.Uninitialized:
return Splash();
case Status.Unauthenticated:
case Status.Authenticating:
return LoginPage();
case Status.Authenticated:
return UserInfoPage(user: user.user);
}
},
),
);
}
}
class UserInfoPage extends StatelessWidget {
final FirebaseUser user;
const UserInfoPage({Key key, this.user}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("User Info"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(user.email),
RaisedButton(
child: Text("SIGN OUT"),
onPressed: () => Provider.of<UserRepository>(context).signOut(),
)
],
),
),
);
}
}
class Splash extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Material(
child: Center(
child: Text("Splash Screen"),
),
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment