Flutter本地数据库管理插件iron_db的使用
Flutter本地数据库管理插件iron_db的使用
FlutterIronDB
废铁key-value数据库, 主打的是简单方便,
功能特性
- 多级目录文件形式保存数据,一个key就是一个文件,方便人工处理,
- web支持,但使用SharedPreferences凑合,
- 支持从assets读取数据,并可以命令行程序写入数据到assets目录,
- 可自定义路径序列化方式,默认是简单把key中不能作为路径的字符删除,
- 可自定义数据序列化方式,默认使用json序列化,支持基本数据类型,
- 默认String和Uint8List数据会原原本本写入到文件,可修改,
- 类型由开发者自己把握,保存double读取int会抛运行时异常,注意泛型类型推断,
开始使用
flutter pub add iron_db
使用示例
import 'package:iron_db/iron_db.dart';
WidgetsFlutterBinding.ensureInitialized();
await Iron.init();
final db = Iron.db.sub('string');
String? value = 'value';
await db.write('key', value);
value = await db.read<String>('key');
expect(value, 'value');
示例代码
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:iron_db/iron_db.dart';
import 'package:logging/logging.dart';
import 'app/routes/app_pages.dart';
void main() async {
Logger.root.level = Level.ALL;
Logger.root.onRecord.listen((record) {
log(
record.message,
name: record.loggerName,
level: record.level.value,
time: record.time,
error: record.error,
stackTrace: record.stackTrace,
);
});
WidgetsFlutterBinding.ensureInitialized();
await Iron.init();
runApp(
GetMaterialApp(
title: "Application",
initialRoute: AppPages.INITIAL,
getPages: AppPages.routes,
),
);
}
更多关于Flutter本地数据库管理插件iron_db的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter本地数据库管理插件iron_db的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter中使用iron_db本地数据库管理插件的示例代码。iron_db是一个轻量级的本地数据库插件,用于在Flutter应用中存储和管理数据。
首先,你需要在你的Flutter项目的pubspec.yaml
文件中添加iron_db依赖:
dependencies:
flutter:
sdk: flutter
iron_db: ^x.y.z # 请使用最新版本号
然后运行flutter pub get
来获取依赖。
以下是一个完整的示例,展示如何使用iron_db来存储和读取数据:
- 导入必要的包
import 'package:flutter/material.dart';
import 'package:iron_db/iron_db.dart';
- 定义数据模型
假设我们要存储一个简单的用户信息,我们可以定义一个数据模型:
class User {
String id;
String name;
int age;
User({required this.id, required this.name, required this.age});
Map<String, dynamic> toMap() {
return {
'id': id,
'name': name,
'age': age,
};
}
factory User.fromMap(Map<String, dynamic> map) {
return User(
id: map['id'] as String,
name: map['name'] as String,
age: map['age'] as int,
);
}
}
- 创建数据库并存储数据
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Iron DB Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: IronDBExample(),
);
}
}
class IronDBExample extends StatefulWidget {
@override
_IronDBExampleState createState() => _IronDBExampleState();
}
class _IronDBExampleState extends State<IronDBExample> {
late IronDB db;
@override
void initState() {
super.initState();
db = IronDB.getInstance('my_database.db');
// 确保数据库初始化完成
db.init().then((_) {
// 存储一些用户数据
User user1 = User(id: '1', name: 'Alice', age: 30);
User user2 = User(id: '2', name: 'Bob', age: 25);
db.put('users/${user1.id}', user1.toMap());
db.put('users/${user2.id}', user2.toMap());
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Iron DB Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 从数据库中读取数据
Map<String, dynamic> user1Data = await db.get('users/1');
Map<String, dynamic> user2Data = await db.get('users/2');
User user1 = User.fromMap(user1Data);
User user2 = User.fromMap(user2Data);
// 显示读取的数据
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('Users Data'),
content: SingleChildScrollView(
child: ListBody(
children: [
Text("User 1: ${user1.name}, Age: ${user1.age}"),
Text("User 2: ${user2.name}, Age: ${user2.age}"),
],
),
),
);
},
);
},
child: Text('Get Users Data'),
),
),
);
}
}
在这个示例中,我们展示了如何初始化iron_db数据库,存储一些用户数据,并从数据库中读取这些数据。注意,在initState
方法中,我们确保数据库初始化完成后再进行数据存储操作。在按钮点击事件中,我们从数据库中读取数据并显示在一个对话框中。
请确保你使用的是iron_db的最新版本,并根据实际需要进行修改和扩展。