Implemented mechanism of redirecting on user status
This commit is contained in:
parent
b2fdcdbc4f
commit
475b1d0bc1
3 changed files with 30 additions and 3 deletions
|
|
@ -19,7 +19,7 @@ class App extends StatelessWidget {
|
||||||
|
|
||||||
Route routes(RouteSettings settings) {
|
Route routes(RouteSettings settings) {
|
||||||
final List<String> routeTokens = settings.name.split('/');
|
final List<String> routeTokens = settings.name.split('/');
|
||||||
|
print(routeTokens);
|
||||||
if (settings.name == '/') {
|
if (settings.name == '/') {
|
||||||
return MaterialPageRoute(
|
return MaterialPageRoute(
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,16 @@ import './google_sign_in_provider.dart';
|
||||||
import '../models/summary_model.dart';
|
import '../models/summary_model.dart';
|
||||||
import '../models/user_model.dart';
|
import '../models/user_model.dart';
|
||||||
|
|
||||||
|
export './google_sign_in_provider.dart' show FirebaseUser;
|
||||||
|
|
||||||
class AuthService {
|
class AuthService {
|
||||||
final GoogleSignInProvider _googleSignInProvider = signInProvider;
|
final GoogleSignInProvider _googleSignInProvider = signInProvider;
|
||||||
final FirestoreProvider _firestoreProvider = firestoreProvider;
|
final FirestoreProvider _firestoreProvider = firestoreProvider;
|
||||||
final _user = BehaviorSubject<FirebaseUser>();
|
final _user = BehaviorSubject<FirebaseUser>();
|
||||||
|
|
||||||
Observable<FirebaseUser> get userStream => _user.stream;
|
Observable<FirebaseUser> get userStream => _user.stream;
|
||||||
|
Future<FirebaseUser> get currentUser =>
|
||||||
|
_googleSignInProvider.getCurrentUser();
|
||||||
|
|
||||||
AuthService() {
|
AuthService() {
|
||||||
_googleSignInProvider.onAuthStateChange.pipe(_user);
|
_googleSignInProvider.onAuthStateChange.pipe(_user);
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,36 @@
|
||||||
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
|
|
||||||
|
import '../resources/authService.dart';
|
||||||
|
|
||||||
class InitialLoadingScreen extends StatelessWidget {
|
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) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: Container(
|
body: Container(
|
||||||
color: Theme.of(context).canvasColor,
|
color: Theme.of(context).canvasColor,
|
||||||
child: Center(
|
child: FutureBuilder(
|
||||||
child: CupertinoActivityIndicator(),
|
future: Future.delayed(
|
||||||
|
Duration(seconds: 2),
|
||||||
|
() => 'Done',
|
||||||
|
),
|
||||||
|
builder: (BuildContext context, AsyncSnapshot snapshot) {
|
||||||
|
if (snapshot.hasData) {
|
||||||
|
redirectUser(context);
|
||||||
|
}
|
||||||
|
return Center(
|
||||||
|
child: CupertinoActivityIndicator(),
|
||||||
|
);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue