Firebase 尚未正确初始化

标签 firebase flutter

我知道这个问题之前已经被问过 100 次了,是的,我已经检查过这些问题,但我不知道为什么我的 Firebase 无法初始化。如果有人可以看一下并提供一些见解,它只是我此时尝试连接的基本 flutter 生成的应用程序......

下面未列出,但尝试过在 setState({})FutureBuilder() 中进行初始化,以及重新制作新的 FireStore 项目/db。

google-services.json 位置:

enter image description here

主要:

    import 'package:flutter/material.dart';
    import 'package:firebase_auth/firebase_auth.dart';
    import 'package:firebase_core/firebase_core.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
            visualDensity: VisualDensity.adaptivePlatformDensity,
          ),
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
      final String title;
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      int _counter = 0;
      void _incrementCounter() {
        setState(() {
          _counter++;
        });
      }
    
      @override
      Widget build(BuildContext context) {
        Scaffold(
          appBar: AppBar(
            title: Text(widget.title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text(
                  'You have pushed the button this many times:',
                ),
                Text(
                  '$_counter',
                  style: Theme.of(context).textTheme.headline4,
                ),
              ],
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: Icon(Icons.add),
          ), // This trailing comma makes auto-formatting nicer for build methods.
        );
      }
    }

公共(public)规范

dependencies:
  flutter:
    sdk: flutter
  firebase_core:
  firebase_auth: ^0.18.4+1
  firebase_storage: ^4.0.1
  cupertino_icons: ^1.0.0

构建\gradle:

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.4'

    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

应用程序\构建\gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 29

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        applicationId "com.example.fish_app"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        multiDexEnabled true
    }

    buildTypes {
        release {
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation 'com.android.support:multidex:1.0.3'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation platform('com.google.firebase:firebase-bom:26.1.1')
    implementation 'com.google.firebase:firebase-analytics'
}

最佳答案

您可以创建一个方法来初始化 firebase 并使用该方法作为 Future Builder 的 future。你可以这样做:-

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHome(),
  );}
}
 // ignore if some imports are not present 
class MyHome extends StatelessWidget{
 //initializing firebase in an method and giving it as an future
 
  initializeFirebase() async{
    await Firebase.initializeApp();
  }

  @override
  Widget build(BuildContext context){
    return FutureBuilder(
      future:initializeFirebase(),
      builder:(context,snapshot){
        if(snapshot.connectionState==ConnectionState.active){
          // return any Widget you like
           return HomePage();//navigate to any page say HomePage
        }
        else{
          return Center(child:Text("Loading..."));
        }
      }
    );
  } 
}

关于Firebase 尚未正确初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65272035/

相关文章:

Flutter list.builder 不滚动

flutter - 因为testing_app需要SDK版本>=2.16.1 <3.0.0,版本解析失败。在 flutter 中

dart - 如何将我的 List<Object> 显示到 Listview 中?

javascript - Google/Firebase reCaptcha 无法与 Angular 一起使用

javascript - 无论代码如何,Firebase 函数超时

firebase - 一个查询中按两个字段排序的 Firestore

ios - 如果节点具有 currentuser.uid 对象并显示在我的 UITableViewCell 中,则从 Firebase 中的节点检索对象

android - 如何用文本填充轮子,然后使其旋转(全部在 Flutter 中)?

flutter - 如何在 Dart 中设置枚举成员的关联常量值?

java - Firebase 访问 Hackernews