Flutter云数据库增强插件enhanced_cloud_firestore的使用

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

Flutter云数据库增强插件enhanced_cloud_firestore的使用

enhanced_cloud_firestore 是一个围绕 cloud_firestore Dart 包的封装,支持过滤、排序、限制、错误处理和成功场景。

开始使用

  1. pubspec.yaml 文件中添加 firebase_core 作为依赖。
  2. 在你的 main.dart 文件中初始化 Firebase 应用。
dependencies:
  firebase_core: ^2.0.0
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';

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

使用示例

读取集合中的数据

// 从 'users' 集合中读取数据
final res = EnhancedFirestore.read(collection: 'users');

// 如果需要排序和限制数量
final res = EnhancedFirestore.read(
  collection: 'users',
  sorts: [
    {'field': 'age', 'descending': true}, // 按年龄降序排序
  ],
  limit: 10, // 限制返回10条记录
);

向集合写入数据

// 向 'users' 集合中写入数据
final res = EnhancedFirestore.write(
    collection: 'users',
    payload: {
     'name': 'John',
     'email': 'john@gmail.com',
     'age': '45',
    },
);

更新集合中的数据

// 更新 'users' 集合中的数据
final res = EnhancedFirestore.update(
    collection: 'users',
    payload: {
     'name': 'John Cena',
     'email': 'johncena@gmail.com',
     'age': '46',
    },
    filters: [
        {
            'field': 'email',
            'filter': FirestoreFilter.isEqualTo,
            'value': 'john@gmail.com',
        }
    ]
);

删除集合中的数据

// 删除 'users' 集合中的数据
final res = EnhancedFirestore.delete(
    collection: 'users',
    filters: [
        {
            'field': 'email',
            'filter': FirestoreFilter.isEqualTo,
            'value': 'johncena@gmail.com',
        }
    ]
);

其他参数

上述四个方法都可以选择性地接收以下参数:

过滤器 (filters)

  • field: 要应用过滤的文档字段。
  • filter: 要应用的过滤类型(是一个名为 FirestoreFilter 的枚举类型)。
  • value: 要匹配的字段内容。

成功回调 (onSuccess)

  • onSuccess: 成功时执行的函数。

错误回调 (onError)

  • onError: 出错时执行的函数。

读取函数的其他属性

排序 (sorts)

  • field: 要应用排序的文档字段。
  • descending: 布尔值表示排序方向(设为 false 表示升序)。

限制 (limit)

  • limit: 返回记录的数量限制。

注意事项

  • 空过滤器列表在更新操作中会导致整个集合被更新。
  • 空过滤器列表在删除操作中会导致整个集合被删除。

致谢

本插件基于 Google 的原始 cloud_firestore 包(https://pub.dev/packages/cloud_firestore)。


示例代码

以下是完整的示例代码:

import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'helpers/firebase_options.dart';
import 'screens/home.dart';

void main() async {
  await dotenv.load(fileName: ".env");
  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: 'Enhanced Cloud Firestore Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const Home(),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何使用 enhanced_cloud_firestore 插件的示例代码。这个插件通常用于增强 Flutter 应用中对 Firestore 数据库的操作。请确保你已经在 pubspec.yaml 文件中添加了 enhanced_cloud_firestore 依赖,并完成了 Firebase 的基本配置。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  enhanced_cloud_firestore: ^最新版本号  # 请替换为最新的版本号

然后运行 flutter pub get 来获取依赖。

2. 初始化 Firebase

确保你已经按照 Firebase 文档完成了 Firebase 的初始化。这通常涉及在你的 android/app/google-services.jsonios/Runner/GoogleService-Info.plist 文件中添加配置,并在你的 Dart 代码中初始化 Firebase 应用。

3. 使用 enhanced_cloud_firestore

以下是一个简单的示例,展示了如何使用 enhanced_cloud_firestore 插件进行数据的读写操作。

import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:enhanced_cloud_firestore/enhanced_cloud_firestore.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Enhanced Cloud Firestore Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final EnhancedFirestore _firestore = EnhancedFirestore.instance;
  CollectionReference _usersCollection = FirebaseFirestore.instance.collection('users');

  Future<void> addUser() async {
    try {
      await _firestore.collection('users').add({
        'name': 'John Doe',
        'email': 'john.doe@example.com',
      });
      print('User added successfully!');
    } catch (e) {
      print('Error adding user: $e');
    }
  }

  Future<void> fetchUsers() async {
    try {
      QuerySnapshot snapshot = await _usersCollection.get();
      List<DocumentSnapshot> documents = snapshot.docs;
      List<Map<String, dynamic>> userList = [];

      for (var doc in documents) {
        userList.add(doc.data() as Map<String, dynamic>);
      }

      setState(() {
        // 假设你有一个 userList 变量来存储用户数据
        // _userList = userList;
      });

      print('Users fetched successfully!');
    } catch (e) {
      print('Error fetching users: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Enhanced Cloud Firestore Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: addUser,
              child: Text('Add User'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: fetchUsers,
              child: Text('Fetch Users'),
            ),
            // 假设你有一个 ListView 来显示用户数据
            // ListView.builder(
            //   itemCount: _userList.length,
            //   itemBuilder: (context, index) {
            //     return ListTile(
            //       title: Text(_userList[index]['name']),
            //       subtitle: Text(_userList[index]['email']),
            //     );
            //   },
            // ),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. 初始化 Firebase:确保你的 Firebase 项目已经正确配置,并且在你的应用中初始化了 Firebase。
  2. 权限设置:在 Firestore 的规则中设置适当的读写权限。
  3. 错误处理:在真实的应用中,你应该添加更多的错误处理逻辑,以确保应用的健壮性。

这个示例展示了如何使用 enhanced_cloud_firestore 插件来添加和获取 Firestore 集合中的数据。你可以根据需要扩展这个示例,以实现更复杂的数据操作。

回到顶部