结合Firebase Auth的颤振路线
我正在开发一个web应用程序,有一个关于路由的问题。 如何结合Firebase Auth进行路由 在互联网上,我看到了很多使用AuthenticationWrapper的示例。 如果您已登录,则进入主页;如果您未登录,则进入登录页面。 那部分有效。但在应用程序中,我想制作更多路线 我了解到(下面的示例1)可以在MaterialApp中创建路由。我有 我试着让它工作,但没有成功 如何结合Firebase Auth进行路由,当用户未登录时,如何导航到登录页面 我很想听听你对这个问题的看法。提前谢谢 Main.dart:结合Firebase Auth的颤振路线,firebase,flutter,routes,firebase-authentication,flutter-web,Firebase,Flutter,Routes,Firebase Authentication,Flutter Web,我正在开发一个web应用程序,有一个关于路由的问题。 如何结合Firebase Auth进行路由 在互联网上,我看到了很多使用AuthenticationWrapper的示例。 如果您已登录,则进入主页;如果您未登录,则进入登录页面。 那部分有效。但在应用程序中,我想制作更多路线 我了解到(下面的示例1)可以在MaterialApp中创建路由。我有 我试着让它工作,但没有成功 如何结合Firebase Auth进行路由,当用户未登录时,如何导航到登录页面 我很想听听你对这个问题的看法。提前谢谢
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
Provider<AuthenticationService>(
create: (_) => AuthenticationService(FirebaseAuth.instance),
),
StreamProvider(
create: (context) =>
context.read<AuthenticationService>().authStateChanges,
)
],
child: MaterialApp(
title: 'Name of the app',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: AuthenticationWrapper(),
));
}
}
class AuthenticationWrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
final firebaseUser = context.watch<User>();
if (firebaseUser != null) {
// Page after loggin in
return HomePage();
}
// Sign in page
return SignInPage();
}
}
MaterialApp(
// Start the app with the "/" named route. In this case, the app starts
// on the FirstScreen widget.
initialRoute: '/',
routes: {
// When navigating to the "/" route, build the FirstScreen widget.
'/': (context) => FirstScreen(),
// When navigating to the "/second" route, build the SecondScreen widget.
'/second': (context) => SecondScreen(),
},
);
你可以做的是创建一个自定义函数,在你的应用程序中提供你想要的所有可能性,就像这样,当你想检查用户的状态时,调用特定的函数
void _check(String username) {
if(user has account) {
if(loggedin) {
Navigator.pushReplacementNamed(context, Home.id);
} else { //if not logged in
Navigator.pushReplacementNamed(context, SignIn.id);
}
} else { // if dont have account
Navigator.pushReplacementNamed(context, SignUP.id);
}
}
你能再详细一点吗?(我如何结合Firebase Auth进行路由,当用户未登录时,它将导航到登录页面?)当您转到需要拥有帐户的页面时。但是您没有登录,因为它会重定向到登录页面。(首先登录,然后观看内容)我想知道如何创建多个路由,每次它检查用户是否登录时。