Flutter数据库管理插件dart_hydrologis_db的使用
Flutter数据库管理插件dart_hydrologis_db的使用
dart_hydrologis_db
是一个基于 Moor 的简单封装,用于简化 SQLite 数据库的管理。它被用于项目如 flutter_geopackage
和 SMASH 数字现场测绘应用
。
安装插件
首先,在项目的 pubspec.yaml
文件中添加依赖:
dependencies:
dart_hydrologis_db: ^x.x.x
然后运行 flutter pub get
来安装依赖。
创建数据库
创建一个数据库实例并定义表结构。以下是一个简单的示例:
import 'package:dart_hydrologis_db/dart_hydrologis_db.dart';
class AppDatabase extends Database {
static final AppDatabase _instance = AppDatabase._internal();
factory AppDatabase() => _instance;
AppDatabase._internal();
[@override](/user/override)
Future<void> init() async {
await super.init();
// 创建表
await exec(
'''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''',
);
}
Future<int> insertUser(String name, int age) async {
return await execInsert(
'INSERT INTO users (name, age) VALUES (?, ?)',
[name, age],
);
}
Future<List<Map<String, dynamic>>> getUsers() async {
return await query('SELECT * FROM users');
}
}
使用数据库
在应用中使用上面创建的数据库实例进行插入和查询操作:
void main() async {
// 初始化数据库
await AppDatabase().init();
// 插入数据
await AppDatabase().insertUser('Alice', 30);
await AppDatabase().insertUser('Bob', 25);
// 查询数据
var users = await AppDatabase().getUsers();
print(users); // 输出查询结果
}
运行示例
确保在 Flutter 应用中正确初始化数据库,并执行插入和查询操作。以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:dart_hydrologis_db/dart_hydrologis_db.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化数据库
await AppDatabase().init();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('dart_hydrologis_db 示例')),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 插入数据
await AppDatabase().insertUser('Alice', 30);
await AppDatabase().insertUser('Bob', 25);
// 查询数据
var users = await AppDatabase().getUsers();
print(users); // 输出查询结果
},
child: Text('执行数据库操作'),
),
),
),
);
}
}
更多关于Flutter数据库管理插件dart_hydrologis_db的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复