Last active
June 24, 2019 15:42
-
-
Save itsatifsiddiqui/b8a8261e46d4540d7a5f93332ae79344 to your computer and use it in GitHub Desktop.
MAIN FILE
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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