Flutter集成Firebase
FlutterFire是一套Flutter插件,可将Flutter应用程序连接到Firebase。
这一步跟这Firebase的流程走就可以
在Android上使用FlutterFire之前,必须首先使用Android应用程序连接到Firebase项目。
在Firebase控制台上,为您的Firebase项目添加一个新的Android应用程序或选择一个现有的Android应用程序。
注册您的Android应用后,请从Firebase控制台下载配置文件(该文件称为google-services.json)。将此文件添加到Flutter项目中的android / app目录中。
为了允许Firebase在Android上使用配置,必须在项目上应用google-services
插件。这需要修改android /目录中的两个文件。
首先,将google-services
插件添加为android / build.gradle文件内的依赖项:
buildscript {
dependencies {
// ... other dependencies
classpath 'com.google.gms:google-services:4.3.3'
}
}
最后,在/android/app/build.gradle文件内的添加以下内容来执行插件:
apply plugin: 'com.android.application'
//add this
apply plugin: 'com.google.gms.google-services'
由于某些Firebase SDK(特别是Firestore)中的类很多,它可能使您超出Android构建系统上64k方法的限制,并且在合并dex档案时您可能会收到错误提示Error:方法引用数.dex文件中的值不能超过64K。
如果确实出现此错误,我们建议启用Multidex for Android。
如果您的应用仅针对Android 21或更高版本(minSdkVersion),则默认情况下已启用multidex,并且您不需要multidex支持库。
但是,如果您的minSdkVersion设置为20或更低,则必须使用multidex支持库并对应用程序项目进行以下修改:
打开/android/app/build.gradle文件。在依赖项下添加multidex模块,并在defaultConfig中启用它:
android {
defaultConfig {
// ...
minSdkVersion 16
targetSdkVersion 28
//add this
multiDexEnabled true
}
}
dependencies {
//add this
implementation 'com.android.support:multidex:1.0.3'
}
请访问Android官方文档以了解更多信息。
在iOS上使用FlutterFire之前,必须首先使用iOS应用程序连接到Firebase项目。
在Firebase控制台上,为您的Firebase项目添加一个新的iOS应用或选择一个现有的iOS应用。 iOS bundle ID
必须与您的本地项目bundle ID
相匹配。使用Xcode打开ios / Runner.xcworkspace时,可在“常规”选项卡中找到bundle ID
。
下载Firebase应用程序的GoogleService-Info.plist文件。
接下来,您必须使用Xcode将文件添加到项目中(通过文件系统手动添加不会将文件链接到项目)。
使用Xcode打开项目的ios / {projectName} .xcworkspace文件。在Xcode的左侧项目导航中,右键单击Runner,然后选择“添加文件”
选择您下载的GoogleService-Info.plist文件,并确保启用了“Copy items if needed”复选框.
在使用任何Firebase服务之前,需要先初始化FlutterFire(您可以将这一过程视为FlutterFire“引导”本身)。初始化步骤是异步的,这意味着您需要防止任何FlutterFire相关的使用,直到初始化完成。
在使用任何Firebase服务之前,您必须首先安装firebase_core插件,该插件负责将您的应用程序连接到Firebase。将插件添加到您的pubspec.yaml文件中:
dependencies:
flutter:
sdk: flutter
//add this
firebase_core: "0.5.3"
因为firebase_core
只提供了几个基本的功能,所以一般情况下我们都需要其他插件.如果使用firebase的其他插件,可以不引入firebase_core
。引入其他插件会自动引入firebase_core
,例如firebase_messaging
.
要初始化FlutterFire,请在Firebase类上调用initializeApp方法:
await Firebase.initializeApp();
该方法是异步的,并且返回Future,因此您需要确保它已完成,然后才能使用firebase相关功能。
示例项目显示了如何使用StatefulWidget实现此目的。
目前,Firestore iOS SDK依赖于大约50万行的大多数C ++代码,这些代码可能需要5分钟以上才能在XCode中构建。为了显着减少构建时间,您可以通过在Flutter项目中的ios / Podfile中添加1行来使用预编译版本。
pod’FirebaseFirestore’,: git =>‘https://github.com/invertase/firestore-ios-sdk-frameworks.git’,: tag =>‘6.26.0’
在目标Podfile中的目标“ Runner”中添加此行,例如:
# ...
target 'Runner' do
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '6.26.0'
# ...
end
此外,请确保已将cocoapods升级到1.9.1或更高版本:gem install cocoapods
有关更多信息,请参见以下问题:https://github.com/FirebaseExtended/flutterfire/issues/2751