Flutter本地数据库管理插件bagel_db的使用

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

Flutter本地数据库管理插件bagel_db的使用

BagelDB

BagelDB 是一个内容管理系统,具有丰富的 API 功能。 该数据库旨在为 web 和 app 开发者提供一站式服务,从数据传输到搜索功能. 同时,数据管理员将能够根据其需求访问数据,并在必要时导出数据。我们的主要关注点是内容传输速度和开发人员和数据管理员的体验。

系统的工作方式是您有专用的令牌可以用来执行 CRUD 操作。每个令牌的访问权限可以通过您的界面,在项目页面的设置选项中进行设置。

要获取详细的示例,请参阅 这里


示例代码

// Copyright 2020 Bagel Studio ltd. All rights reserved.
// For an example app, see https://github.com/bagelstudio/bagel_pizza

import 'dart:io';

import 'package:bagel_db/bagel_db.dart';

const String bagelToken = 'your token here';

class Db {
  Db._();
  static Db? _instance;
  static Db get instance => _instance ??= Db._();
  Future<BagelDB> init({String? token}) async {
    db = await BagelDB.init(token: token);
    return db;
  }
}

late BagelDB db;

void init() async {
  db = await Db.instance.init(token: bagelToken);
}

// 创建 BagelDB 的实例

// 用于存储响应的变量
BagelResponse response = BagelResponse(data: {}, statusCode: 0);

// 使用 Builder 模式获取数据
void getFromBagelDB() async {
  // 简单的获取请求
  await db.collection('testItems').get();

  // 带查询的获取
  await db
      .collection('testItems')
      .query('position', '=', 'developer')
      .query('age', '>', '27'
      .get();

  // 按参数排序的数据
  await db.collection('testItems').sort('age'.get();

  // 按顺序排序
  await db.collection('testItems').sort('age', sortOrder: 'asc'.get();

  // 定义每页的结果数量
  await db.collection('testItems').perPage(2).get();

  // 包含项目的详细信息
  await db.collection('testItems').everything().get();

  // 获取特定的项目
  await db
      .collection('testItems')
      .item('5dr22f010a1466a13e2f967a' /* 替换为您的项目 ID */)
      .get();
}

// 将项目发布到数据库
void postTodb() async {
  // 发布项目到数据库
  await db.collection('testItems').post({
    'name': 'Baz',
    'age': 25,
    'position': 'CTO'
  } /* 替换为您的项目 */);

  await db.collection('testItems').item("customId").set({
    'name': 'Baz',
    'age': 25,
    'position': 'CTO'
  } /* 设置自定义 ID 的项目 :: 如果项目已存在,则会更新它*/);
}

// 更新项目
void putInBagelDB() async {
  // 将项目发布到 BagelDB
  await db.collection('testItems').item('5dr22f010a1466a13e2f967a').put({
    'name': 'Baz',
    'age': 34,
    'position': 'CEO',
  });
}

void deleteFromBagelDB() async {
  await db.collection('testItems').item('5dr22f011a1466a13e2f967a'.delete();
}

// 上传图片
void uploadImage() async {
  File image = File('/Users/userName/Desktop/photo-test.jpeg');
  await db.collection("users").item("3423432").uploadImage("profilePic", image);
}

void getCollectionSchema() async {
  await db.schema('testItems').get();
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用bagel_db进行本地数据库管理的代码案例。bagel_db是一个轻量级的、易于使用的本地数据库插件,适用于Flutter应用。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  bagel_db: ^最新版本号  # 请确保使用最新版本

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

2. 初始化数据库

在你的Flutter应用的入口文件(通常是main.dart)中初始化数据库:

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

void main() {
  // 初始化BagelDB
  BagelDB.init('your_database_name.db');
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('BagelDB Example'),
        ),
        body: HomePage(),
      ),
    );
  }
}

3. 创建表并插入数据

接下来,在你的HomePage类中创建一个表并插入一些数据:

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

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  void initState() {
    super.initState();
    
    // 创建表并插入数据
    createTableAndInsertData();
  }

  void createTableAndInsertData() async {
    // 创建表
    await BagelDB.createTable({
      'name': 'users',
      'columns': [
        {'name': 'id', 'type': 'INTEGER', 'primaryKey': true, 'autoIncrement': true},
        {'name': 'name', 'type': 'TEXT', 'notNull': true},
        {'name': 'email', 'type': 'TEXT', 'unique': true, 'notNull': true},
      ],
    });

    // 插入数据
    await BagelDB.insert('users', {
      'name': 'Alice',
      'email': 'alice@example.com',
    });

    await BagelDB.insert('users', {
      'name': 'Bob',
      'email': 'bob@example.com',
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Data has been inserted into the database!'),
    );
  }
}

4. 查询数据

你可以通过以下方式查询数据并在UI中显示:

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

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  List<Map<String, dynamic>> users = [];

  @override
  void initState() {
    super.initState();
    
    // 创建表并插入数据
    createTableAndInsertData();

    // 查询数据
    queryData();
  }

  void createTableAndInsertData() async {
    // 创建表(同前)
    await BagelDB.createTable({
      'name': 'users',
      'columns': [
        {'name': 'id', 'type': 'INTEGER', 'primaryKey': true, 'autoIncrement': true},
        {'name': 'name', 'type': 'TEXT', 'notNull': true},
        {'name': 'email', 'type': 'TEXT', 'unique': true, 'notNull': true},
      ],
    });

    // 插入数据(同前)
    await BagelDB.insert('users', {'name': 'Alice', 'email': 'alice@example.com'});
    await BagelDB.insert('users', {'name': 'Bob', 'email': 'bob@example.com'});
  }

  void queryData() async {
    // 查询所有用户
    users = await BagelDB.queryAll('users');
    
    // 更新UI
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BagelDB Example'),
      ),
      body: ListView.builder(
        itemCount: users.length,
        itemBuilder: (context, index) {
          Map<String, dynamic> user = users[index];
          return ListTile(
            title: Text('Name: ${user['name']}'),
            subtitle: Text('Email: ${user['email']}'),
          );
        },
      ),
    );
  }
}

5. 更新和删除数据

你也可以使用BagelDB.updateBagelDB.delete方法来更新和删除数据:

// 更新数据
await BagelDB.update('users', {
  'name': 'Alice Updated',
  'email': 'alice_updated@example.com',
}, where: "id = ?", whereArgs: [1]);

// 删除数据
await BagelDB.delete('users', where: "id = ?", whereArgs: [2]);

总结

以上是一个关于如何在Flutter项目中使用bagel_db进行本地数据库管理的简单示例。你可以根据项目的需求进一步扩展和优化这些代码。希望这些示例对你有帮助!

回到顶部