Flutter数据库管理插件database_universe的使用
Flutter数据库管理插件 database_universe
的使用
简介
Database Universe 是一个帮助你在任何地方保存数据的库,具有高性能、易于使用的特点,并且准备好支持扩展业务。
功能
- ✅ 📱️ 跨平台支持(设备、Web)
- ✅ 📜️ 标准化代码风格
- ✅ ⌨️ CLI工具(终端工具帮助你使用此库或创建项目)
- ✅ 🔥️ API支持(如果你开发机器人/用户机器人,可以直接添加库并使用)
- ❌ 🧩️ 自定义扩展(如果需要加速开发,可以添加扩展)
- ❌ ✨️ 友好的信息展示(适合新手)
安装库
在你的Flutter项目中安装database_universe
插件:
dart pub add database_universe
快速入门示例
以下是一个简单的示例脚本,帮助你快速上手使用该库:
示例代码
// ignore_for_file: non_constant_identifier_names
import 'dart:io';
import 'package:database_universe/database_universe.dart';
import 'package:general_lib/general_lib.dart';
import 'package:path/path.dart' as path;
void main(List<String> args) async {
print("start");
/// 添加数据库
DatabaseUniverse databaseUniverse = DatabaseUniverse(
// 更改扩展名为你自己的
extension_name: "dbu",
// 如果设置为true,在打开数据库时密码错误会强制打开但数据库将为空
is_ignore_on_error: true,
);
// 初始化数据库
databaseUniverse.init(crypto: Crypto(key: "od8wkk8nYbgv2na8ApaL0NMGq3rcpnF5"));
// 设置数据库目录
Directory directory_db = () {
if (Dart.isWeb) {
return Directory("");
}
return Directory(path.join(Directory.current.path, "db"));
}();
print("open");
// 打开磁盘数据库
DatabaseUniverseData<JsonScheme> databaseUniverseData = databaseUniverse.disk_open(
file_name: "Slebew",
directory: directory_db,
valueData: JsonScheme({})
);
// 修改值
print("update");
databaseUniverseData.value["first_name"] = "change name";
// 检查键计数是否为整数,如果不是则设置为0
if (databaseUniverseData.value["count"] is int == false) {
databaseUniverseData.value["count"] = 0;
}
// 自增
databaseUniverseData.value["count"] += 1;
// 保存到磁盘
databaseUniverse.disk_save(databaseUniverseData: databaseUniverseData, isWithClose: true);
print("saved");
}
更多关于Flutter数据库管理插件database_universe的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据库管理插件database_universe的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用database_universe
插件进行数据库管理的代码案例。请注意,由于database_universe
可能不是一个真实存在的Flutter插件(因为我无法验证其存在性),我将基于一个通用的SQLite数据库管理插件(如sqlite_flutter
)的概念来提供一个类似的实现示例。你可以根据实际的database_universe
插件文档进行调整。
首先,确保你已经在pubspec.yaml
文件中添加了所需的数据库插件依赖:
dependencies:
flutter:
sdk: flutter
sqlite_flutter: ^0.5.0 # 假设database_universe的替代插件是sqlite_flutter
然后,运行flutter pub get
来安装依赖。
接下来,我们创建一个简单的Flutter应用,用于演示如何使用SQLite数据库插件进行数据库管理。
Step 1: 创建数据库帮助类
创建一个名为database_helper.dart
的文件,用于管理数据库操作。
import 'package:flutter/material.dart';
import 'package:sqlite_flutter/sqlite_flutter.dart';
import 'dart:async';
class DatabaseHelper {
static Database? _db;
static final DatabaseHelper _instance = DatabaseHelper._init();
factory DatabaseHelper() {
return _instance;
}
DatabaseHelper._init();
Future<Database> get db async {
if (_db != null) {
return _db!;
}
_db = await initDB();
return _db!;
}
Future<Database> initDB() async {
var databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'demo.db');
var db = await openDatabase(path, version: 1, onCreate: (Database db, int version) async {
await db.execute(
'CREATE TABLE User('
'id INTEGER PRIMARY KEY,'
'name TEXT,'
'age INTEGER'
')'
);
});
return db;
}
Future<void> insertUser(String name, int age) async {
var db = await db;
await db.insert(
'User',
{'name': name, 'age': age},
conflictAlgorithm: ConflictAlgorithm.replace
);
}
Future<List<Map<String, dynamic>>> getUser() async {
var db = await db;
var result = await db.query('User');
return result.rows.map((row) => row.data).toList();
}
Future<void> updateUser(int id, String name, int age) async {
var db = await db;
await db.update(
'User',
{'name': name, 'age': age},
where: 'id = ?',
whereArgs: [id]
);
}
Future<void> deleteUser(int id) async {
var db = await db;
await db.delete(
'User',
where: 'id = ?',
whereArgs: [id]
);
}
}
Step 2: 使用数据库帮助类
在你的主应用文件中(如main.dart
),你可以使用上面创建的DatabaseHelper
类来执行数据库操作。
import 'package:flutter/material.dart';
import 'database_helper.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter SQLite Demo'),
),
body: HomeScreen(),
),
);
}
}
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final DatabaseHelper dbHelper = DatabaseHelper();
List<Map<String, dynamic>> users = [];
@override
void initState() {
super.initState();
getUsers();
}
Future<void> getUsers() async {
var usersResult = await dbHelper.getUser();
setState(() {
users = usersResult;
});
}
Future<void> insertUser() async {
await dbHelper.insertUser('Alice', 30);
getUsers();
}
Future<void> updateUser(int id) async {
await dbHelper.updateUser(id, 'Bob', 35);
getUsers();
}
Future<void> deleteUser(int id) async {
await dbHelper.deleteUser(id);
getUsers();
}
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
ElevatedButton(
onPressed: insertUser,
child: Text('Insert User'),
),
ElevatedButton(
onPressed: () {
if (users.isNotEmpty) {
updateUser(users.first['id']!);
}
},
child: Text('Update First User'),
),
ElevatedButton(
onPressed: () {
if (users.isNotEmpty) {
deleteUser(users.first['id']!);
}
},
child: Text('Delete First User'),
),
Expanded(
child: ListView.builder(
itemCount: users.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
title: Text('${users[index]['name']}'),
subtitle: Text('Age: ${users[index]['age']}'),
),
);
},
),
),
],
),
);
}
}
这个示例展示了如何使用SQLite插件在Flutter中创建、插入、更新和删除数据。如果你使用的是database_universe
插件,请查阅其官方文档,并根据其API进行相应的调整。通常,插件的使用方式大同小异,主要区别在于API的命名和细节。