Flutter Firebase核心功能集成插件inqvine_core_firebase的使用
Flutter Firebase核心功能集成插件inqvine_core_firebase的使用
inqvine_core_firebase
提供了与常见的 Firebase 服务无缝集成的功能。
平台支持
Android | iOS | MacOS | Web | Windows | Linux |
---|---|---|---|---|---|
✔️ | ✔️ | ✔️ | ✔️ |
开始使用
首先,按照以下教程配置您的项目以使用 Firebase。
https://codelabs.developers.google.com/codelabs/flutter-firebase#0
接下来,在您的 main.dart
文件中,在调用 [inqvine.registerInqvineServices]
之后,调用 [inqvineFirebase.registerInqvineFirebaseServices]
来注册所有服务在您的定位器中。
配置
- 要使用
[InqvineAuthService.loginWithEmailAndPassword]
,您必须在 Firebase 中启用此身份验证提供程序。 - 要使用
[InqvineAdminService]
,您需要启用cloud_firestore
并在名为admin_users
的集合中为用户创建一个文档。
Inqvine Admin Service 规则
要启用 [InqvineAdminService]
,请将以下内容添加到您的 firestore.rules
文件中。
function isAdminUser() {
return isLoggedIn() && exists(/databases/$(database)/documents/admin_users/$(request.auth.uid));
}
match /admin_users/{document} {
allow read: if isAdminUser() || request.resource.data.name == request.auth.uid;
allow write: if false;
}
Inqvine System Service 规则
要启用 [InqvineSystemService]
,请将以下内容添加到您的 firestore.rules
文件中。
match /system_status/{document} {
allow read: if true;
allow write: if false;
}
Inqvine Auth Service
logout
(断开与 Firebase 的连接并设置当前用户为 null)loginWithEmailAndPassword
(使用用户的电子邮件和密码进行身份验证)signUpWithEmailPassword
(使用用户的电子邮件和密码创建用户)
Inqvine Admin Service
isAdmin
(用户是否在admin_user
集合中存在记录)
Inqvine System Service
applicationStatus
(系统的当前状态)downtimeBuilder
(当应用程序离线时构建覆盖层,如果您的基本框架包装在[InqvineDowntimeOverlay]
中)
完整示例 Demo
以下是一个完整的示例,演示如何使用 inqvine_core_firebase
插件。
import 'package:flutter/material.dart';
import 'package:inqvine_core_firebase/inqvine_core_firebase.dart';
void main() async {
// 初始化 Firebase
WidgetsFlutterBinding.ensureInitialized();
await inqvine.registerInqvineServices();
await inqvineFirebase.registerInqvineFirebaseServices();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Firebase Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () async {
// 登录
final result = await InqvineAuthService.loginWithEmailAndPassword(
email: 'test@example.com',
password: 'password123',
);
print(result);
},
child: Text('Login'),
),
ElevatedButton(
onPressed: () async {
// 注册
final result = await InqvineAuthService.signUpWithEmailPassword(
email: 'test@example.com',
password: 'password123',
);
print(result);
},
child: Text('Sign Up'),
),
ElevatedButton(
onPressed: () async {
// 获取系统状态
final status = await InqvineSystemService.applicationStatus();
print(status);
},
child: Text('Get Application Status'),
),
],
),
),
),
);
}
}
更多关于Flutter Firebase核心功能集成插件inqvine_core_firebase的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Firebase核心功能集成插件inqvine_core_firebase的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
inqvine_core_firebase
是一个用于集成 Firebase 核心功能的 Flutter 插件。它简化了 Firebase 在 Flutter 应用中的集成,并提供了一些常用的功能,如身份验证、云存储、实时数据库、Firestore、云消息传递等。
以下是如何在 Flutter 项目中使用 inqvine_core_firebase
插件的步骤和核心功能:
1. 添加依赖
在 pubspec.yaml
文件中添加 inqvine_core_firebase
依赖:
dependencies:
flutter:
sdk: flutter
inqvine_core_firebase: ^latest_version
运行 flutter pub get
以安装依赖。
2. 配置 Firebase
在使用 inqvine_core_firebase
之前,需要先在 Firebase 控制台中创建项目并配置 Flutter 应用。
Android 配置
- 在
android/app
目录下找到build.gradle
文件,确保minSdkVersion
至少为 21。 - 下载
google-services.json
文件并将其放在android/app
目录下。
iOS 配置
- 在 Xcode 中打开 iOS 项目。
- 下载
GoogleService-Info.plist
文件并将其添加到ios/Runner
目录下。
3. 初始化 Firebase
在 main.dart
中初始化 Firebase:
import 'package:inqvine_core_firebase/inqvine_core_firebase.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await InqvineCoreFirebase.initialize(); // 初始化 Firebase
runApp(MyApp());
}
4. 使用核心功能
inqvine_core_firebase
提供了以下核心功能:
a. 身份验证 (Authentication)
- 用户注册、登录、注销:
final authService = InqvineCoreFirebase.authentication;
// 注册用户
await authService.registerWithEmailAndPassword(email: 'user@example.com', password: 'password123');
// 登录用户
await authService.signInWithEmailAndPassword(email: 'user@example.com', password: 'password123');
// 注销用户
await authService.signOut();
b. 实时数据库 (Realtime Database)
- 读取和写入数据:
final databaseService = InqvineCoreFirebase.database;
// 写入数据
await databaseService.setData(path: 'users/user1', data: {'name': 'John Doe', 'age': 25});
// 读取数据
final data = await databaseService.getData(path: 'users/user1');
print(data);
c. Firestore
- 添加和查询文档:
final firestoreService = InqvineCoreFirebase.firestore;
// 添加文档
await firestoreService.addDocument(collection: 'users', data: {'name': 'Jane Doe', 'age': 30});
// 查询文档
final documents = await firestoreService.getDocuments(collection: 'users');
print(documents);
d. 云存储 (Cloud Storage)
- 上传和下载文件:
final storageService = InqvineCoreFirebase.storage;
// 上传文件
final file = File('path/to/local/file.txt');
await storageService.uploadFile(path: 'uploads/file.txt', file: file);
// 下载文件
final url = await storageService.getDownloadUrl(path: 'uploads/file.txt');
print(url);
e. 云消息传递 (Cloud Messaging)
- 接收消息:
final messagingService = InqvineCoreFirebase.messaging;
// 获取 FCM Token
final token = await messagingService.getToken();
print('FCM Token: $token');
// 监听消息
messagingService.onMessage.listen((message) {
print('Received message: $message');
});
5. 处理错误
在使用 Firebase 功能时,可能会遇到错误。可以通过 try-catch
捕获并处理异常:
try {
await authService.registerWithEmailAndPassword(email: 'user@example.com', password: 'password123');
} catch (e) {
print('Error: $e');
}
6. 示例代码
以下是一个完整的示例,展示如何使用 inqvine_core_firebase
进行用户注册和登录:
import 'package:flutter/material.dart';
import 'package:inqvine_core_firebase/inqvine_core_firebase.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await InqvineCoreFirebase.initialize();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: FirebaseAuthExample(),
);
}
}
class FirebaseAuthExample extends StatefulWidget {
[@override](/user/override)
_FirebaseAuthExampleState createState() => _FirebaseAuthExampleState();
}
class _FirebaseAuthExampleState extends State<FirebaseAuthExample> {
final authService = InqvineCoreFirebase.authentication;
final emailController = TextEditingController();
final passwordController = TextEditingController();
Future<void> _register() async {
try {
await authService.registerWithEmailAndPassword(
email: emailController.text,
password: passwordController.text,
);
print('User registered successfully');
} catch (e) {
print('Error: $e');
}
}
Future<void> _login() async {
try {
await authService.signInWithEmailAndPassword(
email: emailController.text,
password: passwordController.text,
);
print('User logged in successfully');
} catch (e) {
print('Error: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Firebase Auth Example')),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
controller: emailController,
decoration: InputDecoration(labelText: 'Email'),
),
TextField(
controller: passwordController,
decoration: InputDecoration(labelText: 'Password'),
obscureText: true,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _register,
child: Text('Register'),
),
ElevatedButton(
onPressed: _login,
child: Text('Login'),
),
],
),
),
);
}
}