Implemented mechanism of redirecting on user status

This commit is contained in:
Mariano Uvalle 2019-03-09 20:57:43 -06:00
parent b2fdcdbc4f
commit 475b1d0bc1
3 changed files with 30 additions and 3 deletions

View file

@ -19,7 +19,7 @@ class App extends StatelessWidget {
Route routes(RouteSettings settings) {
final List<String> routeTokens = settings.name.split('/');
print(routeTokens);
if (settings.name == '/') {
return MaterialPageRoute(
builder: (BuildContext context) {

View file

@ -7,12 +7,16 @@ import './google_sign_in_provider.dart';
import '../models/summary_model.dart';
import '../models/user_model.dart';
export './google_sign_in_provider.dart' show FirebaseUser;
class AuthService {
final GoogleSignInProvider _googleSignInProvider = signInProvider;
final FirestoreProvider _firestoreProvider = firestoreProvider;
final _user = BehaviorSubject<FirebaseUser>();
Observable<FirebaseUser> get userStream => _user.stream;
Future<FirebaseUser> get currentUser =>
_googleSignInProvider.getCurrentUser();
AuthService() {
_googleSignInProvider.onAuthStateChange.pipe(_user);

View file

@ -1,13 +1,36 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import '../resources/authService.dart';
class InitialLoadingScreen extends StatelessWidget {
final AuthService _auth = authService;
void redirectUser(BuildContext context) async {
final user = await _auth.currentUser;
final routeToBePushed = user == null ? 'login/' : 'home/';
Navigator.of(context).pushReplacementNamed(routeToBePushed);
}
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: Theme.of(context).canvasColor,
child: Center(
child: FutureBuilder(
future: Future.delayed(
Duration(seconds: 2),
() => 'Done',
),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
redirectUser(context);
}
return Center(
child: CupertinoActivityIndicator(),
);
},
),
),
);