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

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

FlutterIronDB

废铁key-value数据库, 主打的是简单方便,

img CI Using melos Main version

功能特性

  1. 多级目录文件形式保存数据,一个key就是一个文件,方便人工处理,
  2. web支持,但使用SharedPreferences凑合,
  3. 支持从assets读取数据,并可以命令行程序写入数据到assets目录,
  4. 可自定义路径序列化方式,默认是简单把key中不能作为路径的字符删除,
  5. 可自定义数据序列化方式,默认使用json序列化,支持基本数据类型,
  6. 默认String和Uint8List数据会原原本本写入到文件,可修改,
  7. 类型由开发者自己把握,保存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来存储和读取数据:

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:iron_db/iron_db.dart';
  1. 定义数据模型

假设我们要存储一个简单的用户信息,我们可以定义一个数据模型:

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,
    );
  }
}
  1. 创建数据库并存储数据
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的最新版本,并根据实际需要进行修改和扩展。

回到顶部