Flutter Firebase集成插件easy_firebase的使用
Flutter Firebase集成插件easy_firebase的使用
介绍
easy_firebase
帮助您快速实现各种Firebase功能,并节省时间以便专注于UI。
开始使用
设置所需的Firebase功能并按照步骤使用该包:
Android
-
创建一个Firebase项目
-
安装并设置
Firebase CLI
,可以参考相关指南。 -
设置您希望使用的功能:
- 实时数据库
- Firestore
- 身份验证
- 存储
-
点击添加Android应用程序并按照步骤设置Firebase。将Android的SHA1和SHA256密钥添加到Firebase中。 您可以通过以下命令获取SHA密钥(在Flutter应用文件夹中):
cd android ./gradlew signingReport
-
在应用级别的
build.gradle
中添加这些行:DefaultConfig { ... minSdkVersion 19 multiDexEnabled true ... } dependencies{ ... // 添加这些行 implementation 'com.google.firebase:firebase-auth-ktx' implementation 'com.android.support:multidex:1.0.3' ... }
-
项目现在准备好用于:
- OTP登录
- Google登录
- 邮箱认证
- 匿名登录
-
对于Facebook登录: 注意:不要使用
flutter_facebook_login
包,此包使用flutter_login_facebook
。请参考相关指南并执行步骤1、3、4、5和6。(并在Facebook开发者门户中使用哈希值)。 -
对于
strings.xml
,使用此模板并更新代码:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Your App Name here.</string> <!-- 将 "000000000000" 替换为您的 Facebook 应用 ID --> <string name="facebook_app_id">000000000000</string> <!-- 将 "000000000000" 替换为您的 Facebook 应用 ID。 **注意**:方案需要以 `fb` 开头然后是您的ID。 --> <string name="fb_login_protocol_scheme">fb000000000000</string> </resources>
-
在Firebase控制台中添加给定的
OAuth
重定向URI到您的Facebook应用配置中。现在您的应用已准备好进行Facebook登录。
iOS
-
创建一个Firebase项目
-
安装并设置
Firebase CLI
,可以参考相关指南。 -
设置您希望使用的功能:
- 实时数据库
- Firestore
- 身份验证
- 存储
-
在
Info.plist
中添加以下行用于google_sign_in
:<!-- 将此放在 [my_project]/ios/Runner/Info.plist 文件中 --> <!-- Google 登录部分 --> <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <!-- TODO 替换此值: --> <!-- 复制自 GoogleService-Info.plist 的 REVERSED_CLIENT_ID 键 --> <string>com.googleusercontent.apps.861823949799-vc35cprkp249096uujjn0vvnmcvjppkn</string> </array> </dict> </array> <!-- 结束 Google 登录部分 -->
-
将整个工作区的最小iOS版本设置为12。
-
项目现在准备好用于:
- OTP登录
- Google登录
- 邮箱认证
- 匿名登录
-
对于Facebook登录: 注意:不要使用
flutter_facebook_login
包,此包使用flutter_login_facebook
。请参考相关指南并执行步骤1、3、4和5。(如果同时使用google-sign
和facebook
,应将CFBundleURLSchemes
放在同一CFBundleURLTypes
中)。<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string><Reverse_Client_Id></string> </array> </dict> <dict> <key>CFBundleURLSchemes</key> <array> <string>fd<APP_ID></string> </array> </dict> </array> <key>LSSupportsOpeningDocumentsInPlace</key> <true/> <key>UIFileSharingEnabled</key> <true/>
-
现在您的iOS应用已准备好进行Facebook登录。
功能
此包包含以下功能:
- 认证
- Google登录
- 邮箱注册/登录
- 邮件验证
- OTP登录
- 删除邮箱用户
- 匿名登录
- 登出
- Facebook登录/登出
- Firestore
- 给定集合和文档的CRUD(创建、读取、更新、删除)
- 自定义或嵌套集合/文档的Firestore对象
- 实时数据库
- 给定节点路径和数据作为Map对象的CRUD(创建、读取、更新、删除)
- Firebase存储
- 指定路径下的所有项列表
- 有限数量的所有项列表
- 获取指定路径文件的下载URL
- 从设备或资产上传文件
- 上传字符串数据
- 获取指定文件的元文件
- 下载文件
使用方法
可以在仓库的 sample_example
文件夹中找到示例项目。
// 在您的代码中导入
import 'package:firebase_core/firebase_core.dart';
import 'package:example/firebase_options.dart';
// 在主函数中添加以下内容
void main() {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
...
}
// 使用任何功能只需创建其对象,例如:
var auth = EasyFire().getAuthObject();
var store = EasyFire().getFirestoreObject();
var rtdb = EasyFire().getRtdbObject();
var storage = EasyFire().getStorageObject();
// 使用Google登录
auth.signInWithGoogle();
// 发送数据到Firestore数据库
store.setData('Users','id_123',{'data':123});
// 发送数据到RTDB数据库
rtdb.setData('/data',{'name':'sample'});
// 下载文件(打开文件选择器)
storage.downloadFile(firestorePath: '/sample.png');
// 上传文件(打开文件选择器)
storage.uploadFile();
示例代码
// ignore_for_file: avoid_print
import 'package:easy_firebase/easy_firebase.dart';
import 'package:example/firebase_options.dart';
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
var auth = EasyFire().getAuthObject();
var store = EasyFire().getFirestoreObject();
var rtdb = EasyFire().getRtdbObject();
var storage = EasyFire().getStorageObject();
void _incrementCounter() {
setState(() {
_counter++;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () async {
_incrementCounter();
// 使用Google登录
// await auth.signInWithGoogle();
// 获取Firestore数据
// 从Firebase存储下载数据
store.getData('Users', 'uid').then((value) => print(value));
// 获取实时数据库数据
rtdb.getData('/data').then((value) => print(value));
// 下载文件(打开文件选择器)
storage.downloadFile(firestorePath: '/sample.png');
// 上传文件(打开文件选择器)
storage.uploadFile();
},
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
更多关于Flutter Firebase集成插件easy_firebase的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Firebase集成插件easy_firebase的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用easy_firebase
插件的示例代码。easy_firebase
是一个简化的Firebase集成库,用于方便地在Flutter应用中处理Firebase服务。
前提条件
- Flutter环境:确保你的Flutter开发环境已经配置完成。
- Firebase项目:在Firebase控制台中创建一个项目,并获取相关的配置信息(如
google-services.json
文件)。
步骤
1. 添加依赖
在你的pubspec.yaml
文件中添加easy_firebase
依赖:
dependencies:
flutter:
sdk: flutter
easy_firebase: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Firebase
将你的google-services.json
文件放到android/app/
目录下,并将GoogleService-Info.plist
文件放到ios/Runner/
目录下。
3. 初始化Firebase
在你的main.dart
文件中,初始化easy_firebase
:
import 'package:flutter/material.dart';
import 'package:easy_firebase/easy_firebase.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Firebase
await EasyFirebase.initialize(
apiKey: 'YOUR_API_KEY',
authDomain: 'YOUR_AUTH_DOMAIN',
projectId: 'YOUR_PROJECT_ID',
storageBucket: 'YOUR_STORAGE_BUCKET',
messagingSenderId: 'YOUR_MESSAGING_SENDER_ID',
appId: 'YOUR_APP_ID',
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Easy Firebase Example'),
),
body: FirebaseExample(),
),
);
}
}
注意:在实际应用中,你可以从google-services.json
或GoogleService-Info.plist
文件中读取这些配置,而不是硬编码。
4. 使用Firebase服务
以下是一个使用Firebase Authentication进行用户登录的示例:
import 'package:flutter/material.dart';
import 'package:easy_firebase/easy_firebase.dart';
class FirebaseExample extends StatefulWidget {
@override
_FirebaseExampleState createState() => _FirebaseExampleState();
}
class _FirebaseExampleState extends State<FirebaseExample> {
String _authStatus = 'Not Logged In';
void _signInAnonymously() async {
try {
await EasyFirebaseAuth.signInAnonymously();
setState(() {
_authStatus = 'Logged In Anonymously';
});
} catch (e) {
print('Error signing in anonymously: $e');
}
}
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Auth Status: $_authStatus',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _signInAnonymously,
child: Text('Sign In Anonymously'),
),
],
),
);
}
}
在这个示例中,我们定义了一个按钮,当用户点击按钮时,将使用Firebase的匿名登录功能进行登录,并更新UI显示登录状态。
注意事项
- 确保你的Firebase项目配置正确,并且已经启用了所需的Firebase服务(如Authentication)。
- 根据你的需求,你可能需要配置更多的Firebase服务,如Firestore、Storage等,并参考
easy_firebase
的文档进行相应的集成和使用。
这个示例提供了一个基本的集成框架,你可以根据实际需求进行扩展和修改。