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

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

好的,以下是关于“Flutter本地数据库管理插件flutter_local_db的使用”的完整示例demo:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化默认配置
  await LocalDB.init();
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Flutter Local DB Demo')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  // 创建记录
                  final user = await LocalDB.Post('user-123456789', {
                    'name': 'John Doe',
                    'email': 'john@example.com',
                    'metadata': {
                      'lastLogin': DateTime.now().toIso8601String(),
                      'preferences': {'theme': 'dark'}
                    }
                  });

                  print('Created User: $user');
                },
                child: Text('Create User'),
              ),
              
              ElevatedButton(
                onPressed: () async {
                  // 获取单个记录
                  final user = await LocalDB.GetById('user-1123456789');
                  if (user != null) {
                    print('Retrieved User: $user');
                  } else {
                    print('User not found');
                  }
                },
                child: Text('Get Single User'),
              ),
              
              ElevatedButton(
                onPressed: () async {
                  // 获取多个记录(分页)
                  final users = await LocalDB.Get(limit: 2);
                  if (users.isNotEmpty) {
                    print('Retrieved Users: $users');
                  } else {
                    print('No records found');
                  }
                },
                child: Text('Get Multiple Users'),
              ),
              
              ElevatedButton(
                onPressed: () async {
                  // 更新记录
                  await LocalDB.Put('user-1113333333', {
                    'name': 'John Doe',
                    'email': 'john.doe@example.com',
                    'metadata': {
                      'lastLogin': DateTime.now().toIso8601String(),
                      'preferences': {'theme': 'light'}
                    }
                  });
                  print('Updated User');
                },
                child: Text('Update User'),
              ),
              
              ElevatedButton(
                onPressed: () async {
                  // 删除记录
                  await LocalDB.Delete('user-1113333333');
                  print('Deleted User');
                },
                child: Text('Delete User'),
              ),
              
              ElevatedButton(
                onPressed: () async {
                  // 清除所有记录
                  await LocalDB.Clean();
                  print('All records cleared');
                },
                child: Text('Clear All Records'),
              ),
              
              ElevatedButton(
                onPressed: () async {
                  // 深度清理(重置数据库)
                  await LocalDB.DeepClean();
                  print('Database deep cleaned');
                },
                child: Text('Deep Clean Database'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter应用中使用flutter_local_db插件进行本地数据库管理的示例代码。请注意,flutter_local_db是一个假设的插件名称,用于演示目的。在实际开发中,你可能会使用如sqflitefloormoor等流行的Flutter本地数据库插件。不过,由于你的要求是基于flutter_local_db,我将假设它提供了类似的功能,并展示如何使用它。

首先,确保你已经在pubspec.yaml文件中添加了flutter_local_db依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_local_db: ^x.y.z  # 替换为实际版本号

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

接下来,在你的Flutter应用中,你可以按照以下步骤使用flutter_local_db进行数据库操作:

  1. 初始化数据库
import 'package:flutter/material.dart';
import 'package:flutter_local_db/flutter_local_db.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Local DB Demo'),
        ),
        body: MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late FlutterLocalDB db;

  @override
  void initState() {
    super.initState();
    initDB();
  }

  void initDB() async {
    db = FlutterLocalDB();
    // 假设openDatabase是打开或创建数据库的方法
    await db.openDatabase('my_database.db', version: 1, onCreate: (db, version) async {
      // 创建表
      await db.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        onPressed: () async {
          // 执行数据库操作,如插入数据
          await insertData();
        },
        child: Text('Insert Data'),
      ),
    );
  }

  Future<void> insertData() async {
    // 插入数据到users表
    await db.rawInsert('INSERT INTO users (name, age) VALUES (?, ?)', ['Alice', 30]);
    print('Data inserted successfully');
  }
}
  1. 查询数据
Future<List<Map<String, dynamic>>> queryData() async {
  // 查询users表中的所有数据
  return await db.rawQuery('SELECT * FROM users');
}

你可以在按钮点击事件中调用queryData方法,并将结果显示在UI上:

ElevatedButton(
  onPressed: async () {
    List<Map<String, dynamic>> results = await queryData();
    print(results); // 打印查询结果
    // 可以在这里更新UI来显示查询结果
  },
  child: Text('Query Data'),
),
  1. 更新数据
Future<void> updateData() async {
  // 更新users表中的某条数据
  await db.rawUpdate('UPDATE users SET age = ? WHERE name = ?', [31, 'Alice']);
  print('Data updated successfully');
}

同样,你可以在按钮点击事件中调用updateData方法。

  1. 删除数据
Future<void> deleteData() async {
  // 删除users表中的某条数据
  await db.rawDelete('DELETE FROM users WHERE name = ?', ['Alice']);
  print('Data deleted successfully');
}

同样,在按钮点击事件中调用deleteData方法。

请注意,上述代码是基于假设的flutter_local_db插件的API设计的。在实际开发中,你需要参考具体插件的文档来了解如何正确地打开数据库、执行SQL语句以及处理异步操作。例如,sqflite插件提供了openDatabaserawInsertrawQueryrawUpdaterawDelete等方法,你可以根据文档来使用它们。

回到顶部