Flutter云数据库CRUD操作插件woo_firestore_crud的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter云数据库CRUD操作插件woo_firestore_crud的使用

简介

woo_firestore_crud 是一个用于处理 Firestore 数据库基本 CRUD 操作的 Flutter 插件。通过该插件,您可以轻松实现创建、读取、更新和删除文档及集合的功能。


类的使用

首先,您需要初始化 WooFirestore 实例来调用插件提供的功能。以下是如何设置和使用 WooFirestore 的示例:

// 导入必要的包
import 'package:woo_firestore_crud/woo_firestore_crud.dart';

// 创建一个测试类
class ClassTest {
    // 初始化 WooFirestore 实例
    final WooFirestore wooFirestore = WooFirestore.instance;
}

注意:所有函数都需要通过 wooFirestore 变量调用。


函数详解

1. add

用于向集合中添加新文档。

void addDocument() async {
    try {
        // 调用 add 方法并传入集合路径和数据
        String documentId = await wooFirestore.add(
            collectionPath: 'users', // 集合路径
            data: {               // 文档数据
                'name': 'John Doe',
                'age': 25,
                'email': 'johndoe@example.com'
            }
        );

        print('新文档已创建,ID: $documentId');
    } catch (e) {
        print('错误: $e');
    }
}
2. set

用于创建或替换已存在的文档。

void setDocument() async {
    try {
        // 调用 set 方法并传入集合路径、文档 ID 和数据
        await wooFirestore.set(
            collectionPath: 'users',
            documentId: '12345', // 文档 ID
            data: {
                'name': 'Jane Doe',
                'age': 30,
                'email': 'janedoe@example.com'
            }
        );

        print('文档已更新');
    } catch (e) {
        print('错误: $e');
    }
}
3. update

用于更新现有文档的部分字段。

void updateDocument() async {
    try {
        // 调用 update 方法并传入集合路径、文档 ID 和更新的数据
        await wooFirestore.update(
            collectionPath: 'users',
            documentId: '12345',
            data: {
                'age': 31 // 更新年龄字段
            }
        );

        print('文档已更新');
    } catch (e) {
        print('错误: $e');
    }
}
4. delete

用于删除指定文档。

void deleteDocument() async {
    try {
        // 调用 delete 方法并传入集合路径和文档 ID
        await wooFirestore.delete(
            collectionPath: 'users',
            documentId: '12345'
        );

        print('文档已删除');
    } catch (e) {
        print('错误: $e');
    }
}
5. getCol

用于获取集合中的所有文档。

void getCollectionDocuments() async {
    try {
        // 调用 getCol 方法并传入集合路径
        List<Map<String, dynamic>> documents = await wooFirestore.getCol(
            collectionPath: 'users'
        );

        // 打印所有文档
        documents.forEach((doc) {
            print(doc);
        });
    } catch (e) {
        print('错误: $e');
    }
}
6. getDoc

用于获取单个文档。

void getSingleDocument() async {
    try {
        // 调用 getDoc 方法并传入集合路径和文档 ID
        Map<String, dynamic> document = await wooFirestore.getDoc(
            collectionPath: 'users',
            documentId: '12345'
        );

        print('文档内容: $document');
    } catch (e) {
        print('错误: $e');
    }
}
7. streamCol

用于监听集合的变化。

void listenToCollectionChanges() {
    // 调用 streamCol 方法并传入集合路径
    Stream<List<Map<String, dynamic>>> stream = wooFirestore.streamCol(
        collectionPath: 'users'
    );

    stream.listen((documents) {
        // 打印集合中的所有文档
        documents.forEach((doc) {
            print(doc);
        });
    });
}
8. streamDoc

用于监听单个文档的变化。

void listenToDocumentChanges() {
    // 调用 streamDoc 方法并传入集合路径和文档 ID
    Stream<Map<String, dynamic>> stream = wooFirestore.streamDoc(
        collectionPath: 'users',
        documentId: '12345'
    );

    stream.listen((document) {
        print('文档更新: $document');
    });
}

完整示例

以下是一个完整的示例,展示了如何使用 woo_firestore_crud 插件进行基本的 CRUD 操作。

import 'package:flutter/material.dart';
import 'package:woo_firestore_crud/woo_firestore_crud.dart';

void main() {
    runApp(MyApp());
}

class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
        return MaterialApp(
            home: Scaffold(
                appBar: AppBar(title: Text('woo_firestore_crud 示例')),
                body: Center(
                    child: ElevatedButton(
                        onPressed: () {
                            testCrudOperations();
                        },
                        child: Text('测试 CRUD 操作'),
                    ),
                ),
            ),
        );
    }

    void testCrudOperations() async {
        // 初始化 WooFirestore 实例
        final WooFirestore wooFirestore = WooFirestore.instance;

        try {
            // 添加文档
            String newDocId = await wooFirestore.add(
                collectionPath: 'users',
                data: {
                    'name': 'Alice',
                    'age': 22,
                    'email': 'alice@example.com'
                }
            );
            print('添加文档成功,ID: $newDocId');

            // 获取集合中的所有文档
            List<Map<String, dynamic>> users = await wooFirestore.getCol(
                collectionPath: 'users'
            );
            print('集合中的文档: $users');

            // 更新文档
            await wooFirestore.update(
                collectionPath: 'users',
                documentId: newDocId,
                data: {'age': 23}
            );
            print('文档已更新');

            // 获取单个文档
            Map<String, dynamic> user = await wooFirestore.getDoc(
                collectionPath: 'users',
                documentId: newDocId
            );
            print('单个文档内容: $user');

            // 监听集合变化
            Stream<List<Map<String, dynamic>>> stream = wooFirestore.streamCol(
                collectionPath: 'users'
            );
            stream.listen((docs) {
                print('集合更新: $docs');
            });

            // 删除文档
            await wooFirestore.delete(
                collectionPath: 'users',
                documentId: newDocId
            );
            print('文档已删除');
        } catch (e) {
            print('错误: $e');
        }
    }
}

更多关于Flutter云数据库CRUD操作插件woo_firestore_crud的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter云数据库CRUD操作插件woo_firestore_crud的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


woo_firestore_crud 是一个用于在 Flutter 应用中简化 Firestore 数据库 CRUD(创建、读取、更新、删除)操作的插件。它提供了一个简单的 API,使得开发者可以更轻松地与 Firestore 进行交互。

安装

首先,你需要在 pubspec.yaml 文件中添加 woo_firestore_crud 依赖:

dependencies:
  flutter:
    sdk: flutter
  woo_firestore_crud: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

初始化

在使用 woo_firestore_crud 之前,你需要初始化 Firestore。通常,你可以在 main.dart 中进行初始化:

import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

使用 woo_firestore_crud

1. 创建数据

import 'package:woo_firestore_crud/woo_firestore_crud.dart';

void addData() async {
  final firestoreCRUD = WooFirestoreCRUD(collectionName: 'users');
  await firestoreCRUD.add({
    'name': 'John Doe',
    'email': 'john.doe@example.com',
    'age': 30,
  });
}

2. 读取数据

void getData() async {
  final firestoreCRUD = WooFirestoreCRUD(collectionName: 'users');
  final data = await firestoreCRUD.get();
  print(data); // 打印所有用户数据
}

你也可以根据文档 ID 获取单个文档:

void getDocumentById(String id) async {
  final firestoreCRUD = WooFirestoreCRUD(collectionName: 'users');
  final document = await firestoreCRUD.getById(id);
  print(document); // 打印指定ID的文档
}

3. 更新数据

void updateData(String id) async {
  final firestoreCRUD = WooFirestoreCRUD(collectionName: 'users');
  await firestoreCRUD.update(id, {
    'age': 31,
  });
}

4. 删除数据

void deleteData(String id) async {
  final firestoreCRUD = WooFirestoreCRUD(collectionName: 'users');
  await firestoreCRUD.delete(id);
}

完整示例

以下是一个完整的示例,展示了如何使用 woo_firestore_crud 进行 CRUD 操作:

import 'package:flutter/material.dart';
import 'package:woo_firestore_crud/woo_firestore_crud.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Firestore CRUD Example')),
        body: FirestoreCRUDExample(),
      ),
    );
  }
}

class FirestoreCRUDExample extends StatelessWidget {
  final firestoreCRUD = WooFirestoreCRUD(collectionName: 'users');

  void addData() async {
    await firestoreCRUD.add({
      'name': 'John Doe',
      'email': 'john.doe@example.com',
      'age': 30,
    });
  }

  void getData() async {
    final data = await firestoreCRUD.get();
    print(data);
  }

  void updateData(String id) async {
    await firestoreCRUD.update(id, {
      'age': 31,
    });
  }

  void deleteData(String id) async {
    await firestoreCRUD.delete(id);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          ElevatedButton(
            onPressed: addData,
            child: Text('Add Data'),
          ),
          ElevatedButton(
            onPressed: getData,
            child: Text('Get Data'),
          ),
          ElevatedButton(
            onPressed: () => updateData('document_id'),
            child: Text('Update Data'),
          ),
          ElevatedButton(
            onPressed: () => deleteData('document_id'),
            child: Text('Delete Data'),
          ),
        ],
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!