Flutter Firebase管理工具插件firebase_manager的使用
Flutter Firebase管理工具插件firebase_manager的使用
FirebaseManager
⚠️ 本README文件可能不准确,您应该在使用前检查代码并进行测试。(最佳方式是查看示例)
这是一个在Flutter中轻松管理Firebase的方法。
设置您的应用程序以使用FirebaseManager
步骤:
- 将FirebaseManager库添加到项目的
pubspec.yaml
文件中。 - 运行shell命令(如果您在Firebase上添加或移除了登录提供程序,则应重新执行此操作):
firebase login dart pub global activate flutterfire_cli flutter pub add firebase_core flutterfire configure
- 修改您的主方法如下:
import 'package:firebase_manager/firebase_manager.dart'; import 'package:flutter/material.dart'; import 'firebase_options.dart'; void main() async { fs.initApp( options: DefaultFirebaseOptions.currentPlatform, appName: 'your_app_name', isDebug: false, runApp: () async { runApp(const MyApp()); }, ); }
- 在Firebase网站上开启您要使用的服务,如数据库、认证、存储等。
- 如果您使用的是Android认证,请运行
cd android
,然后运行./gradlew signingReport
并将SHA1和SHA-256复制到您的Firebase项目设置中。
- 如果您使用的是Android认证,请运行
- 构建并修复您的项目错误,参见<强>Android Build Error</强>。
Android Google Auth
您应该在Android文件夹中运行./gradlew signingReport
。
如果需要,您应在那之前运行以下命令:
eval "$(jenv init -)"
jenv add /Library/Java/JavaVirtualMachines/jdk-11.0.15.1.jdk/Contents/Home
jenv versions
jenv local oracle64-11.0.15.1
./gradlew signingReport
完成后,您应该将SHA1和SHA-256复制到Firebase项目设置中。
之后,您应该重新运行flutterfire configure
。
Android构建错误
如果需要,请执行以下操作:
在android/app/build.gradle
中的android{defaultConfig{...}}
修改为minSdkVersion 19
,添加multiDexEnabled true
。
在同一文件中的dependencies{...}
中添加implementation 'androidx.multidex:multidex:2.0.1'
。
在android/build.gradle
中的buildscript{dependencies{...}}
修改为classpath 'com.google.gms:google-services:4.3.14'
。
使用一个实例访问所有Firebase功能
您可以使用FirebaseManager.share
或fs
,它们是同一个实例。
如何访问Firebase存储?
使用fs.storage
可以获取一个实例来访问Firebase存储的所有功能。
例如:
final file = await fs.storage.getFileAuto('a/b/c/d.jpg');
此示例会自动检查本地目录中的文件是否存在,如果不存在则从Firebase存储下载文件。
文件池的功能
FirebaseManager中有一个名为FilePool的功能,它使用md5文件名保存文件在Firebase上。
获取用于显示服务器上图像的widget
您可以使用FmFilePoolImage
。
[firestore] 获取随机ID的文档并获取其ID
示例:
final mainColl = fs.fireStore.getMainColl();
final doc = mainColl.getRandomNameDoc();
final id = doc.getID();
如果您想获取包含ID的地图数据
您可以使用[FireDoc]getIncludeIDMap()
。
MacOS
您应该向您的DebugProfile.entitlements
和ReleaseProfile.entitlements
中添加以下内容:
<key>com.apple.security.network.client</key>
<true/>
如果您使用了json_serializable和Firestore
您可以使用@FirestoreDateTimeConverter()
在您的DateTime上转换,以便将其转换为JSON可序列化并保存到Firestore中。
例如:
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:task_manager/dataset/firebase_util/firestore_date_time_converter.dart';
import 'package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart';
part 'task_dataset.freezed.dart';
part 'task_dataset.g.dart';
[@freezed](/user/freezed)
class TaskDataset with _$TaskDataset {
const factory TaskDataset({
required String task,
required bool isDone,
@FirestoreDateTimeConverter() required DateTime? createdAt,
bool? stared,
}) = _TaskDataset;
factory TaskDataset.fromJson(Map<String, dynamic> json) => _$TaskDatasetFromJson(json);
}
更多关于Flutter Firebase管理工具插件firebase_manager的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Firebase管理工具插件firebase_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
firebase_manager
是一个用于简化 Flutter 应用中 Firebase 管理的工具插件。它提供了一些便捷的方法来管理 Firebase 的初始化、配置、身份验证、数据库操作等。以下是如何使用 firebase_manager
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 firebase_manager
插件的依赖:
dependencies:
flutter:
sdk: flutter
firebase_manager: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 Firebase
在使用 Firebase 之前,需要先初始化 Firebase。通常,你可以在 main.dart
文件中进行初始化:
import 'package:firebase_manager/firebase_manager.dart';
import 'package:flutter/material.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Firebase
await FirebaseManager.initialize(
options: FirebaseOptions(
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());
}
3. 使用 Firebase 功能
firebase_manager
提供了一些便捷的方法来使用 Firebase 的各种功能,例如身份验证、数据库操作等。
身份验证
import 'package:firebase_manager/firebase_manager.dart';
// 使用电子邮件和密码注册
await FirebaseManager.auth().createUserWithEmailAndPassword(
email: "user@example.com",
password: "password123",
);
// 使用电子邮件和密码登录
await FirebaseManager.auth().signInWithEmailAndPassword(
email: "user@example.com",
password: "password123",
);
// 获取当前用户
final user = FirebaseManager.auth().currentUser;
print(user?.email);
// 登出
await FirebaseManager.auth().signOut();
数据库操作
import 'package:firebase_manager/firebase_manager.dart';
// 写入数据
await FirebaseManager.database().ref('users/1').set({
'name': 'John Doe',
'email': 'john@example.com',
});
// 读取数据
final snapshot = await FirebaseManager.database().ref('users/1').once();
print(snapshot.value);
// 更新数据
await FirebaseManager.database().ref('users/1').update({
'email': 'john.doe@example.com',
});
// 删除数据
await FirebaseManager.database().ref('users/1').remove();
4. 其他功能
firebase_manager
还支持其他 Firebase 功能,如云存储、云函数、消息推送等。你可以根据需要使用相应的功能。
5. 错误处理
在使用 Firebase 功能时,建议添加错误处理代码以捕获可能发生的异常:
try {
await FirebaseManager.auth().signInWithEmailAndPassword(
email: "user@example.com",
password: "password123",
);
} catch (e) {
print("Error: $e");
}
6. 示例应用
以下是一个简单的示例应用,展示了如何使用 firebase_manager
进行用户注册和登录:
import 'package:firebase_manager/firebase_manager.dart';
import 'package:flutter/material.dart';
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Firebase Manager Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () async {
try {
await FirebaseManager.auth().createUserWithEmailAndPassword(
email: "user@example.com",
password: "password123",
);
print("User registered successfully");
} catch (e) {
print("Error: $e");
}
},
child: Text("Register"),
),
ElevatedButton(
onPressed: () async {
try {
await FirebaseManager.auth().signInWithEmailAndPassword(
email: "user@example.com",
password: "password123",
);
print("User logged in successfully");
} catch (e) {
print("Error: $e");
}
},
child: Text("Login"),
),
],
),
),
),
);
}
}