Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结合Firebase Auth的颤振路线_Firebase_Flutter_Routes_Firebase Authentication_Flutter Web - Fatal编程技术网

结合Firebase Auth的颤振路线

结合Firebase Auth的颤振路线,firebase,flutter,routes,firebase-authentication,flutter-web,Firebase,Flutter,Routes,Firebase Authentication,Flutter Web,我正在开发一个web应用程序,有一个关于路由的问题。 如何结合Firebase Auth进行路由 在互联网上,我看到了很多使用AuthenticationWrapper的示例。 如果您已登录,则进入主页;如果您未登录,则进入登录页面。 那部分有效。但在应用程序中,我想制作更多路线 我了解到(下面的示例1)可以在MaterialApp中创建路由。我有 我试着让它工作,但没有成功 如何结合Firebase Auth进行路由,当用户未登录时,如何导航到登录页面 我很想听听你对这个问题的看法。提前谢谢

我正在开发一个web应用程序,有一个关于路由的问题。 如何结合Firebase Auth进行路由

在互联网上,我看到了很多使用AuthenticationWrapper的示例。 如果您已登录,则进入主页;如果您未登录,则进入登录页面。 那部分有效。但在应用程序中,我想制作更多路线

我了解到(下面的示例1)可以在MaterialApp中创建路由。我有 我试着让它工作,但没有成功

如何结合Firebase Auth进行路由,当用户未登录时,如何导航到登录页面

我很想听听你对这个问题的看法。提前谢谢

Main.dart:

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进行路由,当用户未登录时,它将导航到登录页面?)当您转到需要拥有帐户的页面时。但是您没有登录,因为它会重定向到登录页面。(首先登录,然后观看内容)我想知道如何创建多个路由,每次它检查用户是否登录时。