Firebase 身份验证在我的 flutter 应用程序中不起作用

问题描述 投票:0回答:1

我刚刚在我的 flutter 应用程序中实现了 firebase 身份验证,但是当我运行该应用程序时,它没有启动。我不知道出了什么问题,有人可以指导我在哪里可以更改代码。在我的应用程序中,我实现了包装文件,在其中检查用户的状态。

Main.dart



import 'package:firebase_core/firebase_core.dart';

import 'package:flutter/material.dart';

import 'package:stream/wrapper.dart';



void main() async {

  await Firebase.initializeApp();

  runApp(const MyApp());

}



class MyApp extends StatelessWidget {

  const MyApp({super.key});



  @override

  Widget build(BuildContext context) {

    return MaterialApp(

      debugShowCheckedModeBanner: false,

      title: 'Firebase Auth',

      theme: ThemeData(

        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),

        useMaterial3: true,

      ),

      home: Wrapper(),

    );

  }

}

wrapper.dart



import 'package:flutter/material.dart';

import 'package:firebase_auth/firebase_auth.dart';

import 'package:stream/home.dart';

import 'package:stream/login.dart';



class Wrapper extends StatefulWidget {

  const Wrapper({super.key});



  @override

  State<Wrapper> createState() => _WrapperState();

}



class _WrapperState extends State<Wrapper> {

  @override

  Widget build(BuildContext context) {

    return Scaffold(

      body: StreamBuilder(

        stream: FirebaseAuth.instance.authStateChanges(),

        builder: (context, snapshot) {

          if (snapshot.hasData) {

            return Home();

          } else {

            return Login();

          }

        },

      ),

    );

  }

}

我只想使用 firebase 开始身份验证。

flutter firebase authentication
1个回答
0
投票

您应该在 void main() 函数中初始化 Flutter 绑定,如下所示:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: const FirebaseOptions(
      apiKey: "Your apikey",
      appId: "Your appId",
      messagingSenderId: "Your messagingSenderId",
      projectId: "Your projectId",
    ),
  );
  runApp(const MyApp());
}

说明:

WidgetsFlutterBinding.ensureInitialized(); 用于确保在发生任何其他操作之前初始化 Flutter 框架所需的绑定。当您尝试执行某些操作(例如访问存储或网络调用等特定于平台的服务)时,这一点尤其重要,这需要完全设置 Flutter 框架。

例如,如果您尝试初始化 Firebase 或任何其他需要特定于平台的初始化的插件,您通常会调用 WidgetsFlutterBinding.ensureInitialized();在应用程序的 main() 函数的开头或初始化这些插件之前。这可确保在执行任何特定于平台的代码之前设置必要的 Flutter 绑定。

© www.soinside.com 2019 - 2024. All rights reserved.