Flutter Firebase管理工具插件firebase_manager的使用

Flutter Firebase管理工具插件firebase_manager的使用

FirebaseManager

⚠️ 本README文件可能不准确,您应该在使用前检查代码并进行测试。(最佳方式是查看示例)

这是一个在Flutter中轻松管理Firebase的方法。

设置您的应用程序以使用FirebaseManager

步骤:

  1. 将FirebaseManager库添加到项目的pubspec.yaml文件中。
  2. 运行shell命令(如果您在Firebase上添加或移除了登录提供程序,则应重新执行此操作):
    firebase login
    dart pub global activate flutterfire_cli
    flutter pub add firebase_core
    flutterfire configure
    
  3. 修改您的主方法如下:
    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());
        },
      );
    }
    
  4. 在Firebase网站上开启您要使用的服务,如数据库、认证、存储等。
    • 如果您使用的是Android认证,请运行cd android,然后运行./gradlew signingReport并将SHA1和SHA-256复制到您的Firebase项目设置中。
  5. 构建并修复您的项目错误,参见<强>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.sharefs,它们是同一个实例。

如何访问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.entitlementsReleaseProfile.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

1 回复

更多关于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"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部