Flutter OpenHarmony

插件介绍

ohos_sqlite3_demo 是一个专为OpenHarmony系统适配的Flutter SQLite数据库组件,基于官方 sqlite3 包进行鸿蒙化定制修改。该组件提供了完整的SQLite数据库操作能力,支持内存数据库和文件数据库两种模式,适用于需要在OpenHarmony平台上进行本地数据存储的Flutter应用开发。

主要功能特点:

  • 支持SQLite核心数据类型和SQL语法
  • 提供内存数据库和文件数据库两种存储模式
  • 支持表创建、数据插入、查询、更新和删除等基本操作
  • 兼容OpenHarmony API 9+版本
  • 提供简洁易用的Dart API接口

该组件通过自定义的Git仓库进行分发,确保在OpenHarmony平台上的兼容性和稳定性。

包的引入

由于该三方库为OpenHarmony定制修改版本,需要通过Git形式引入。在项目的 pubspec.yaml 文件中,添加以下依赖配置(使用AtomGit替代GitCode):

dependencies:
  sqlite3: ^1.11.2

# 添加依赖覆盖,使用OpenHarmony适配版本
dependency_overrides:
  sqlite3:
    git:
      url: "https://atomgit.com/flutter-openharmony/sqlite3-ohos.dart.git"
      path: "sqlite3"
      ref: "sqlite3-2.4.7-ohos"

  sqlite3_flutter_libs:
    git:
      url: "https://atomgit.com/flutter-openharmony/sqlite3-ohos.dart.git"
      path: "sqlite3_flutter_libs"
      ref: "sqlite3_flutter_libs-0.5.25-ohos"

配置完成后,执行 flutter pub get 命令获取依赖包。

API调用示例

1. 内存数据库操作

以下示例展示了如何创建内存数据库、创建表、插入数据和查询数据:

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter SQLite Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  void _insertData() {
    // 打开内存数据库
    final db = sqlite3.openInMemory();

    // 创建表
    db.execute('''
      CREATE TABLE users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL
      );
    ''');

    // 插入数据
    db.execute('INSERT INTO users (name) VALUES ("Alice")');
    db.execute('INSERT INTO users (name) VALUES ("Bob")');

    // 查询数据
    final result = db.select('SELECT * FROM users');
    for (final row in result) {
      print('User: id=${row['id']}, name=${row['name']}');
    }

    // 关闭数据库连接
    db.dispose();
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Home Screen')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _insertData,
              child: const Text('Insert Data into SQLite'),
            ),
          ],
        ),
      ),
    );
  }
}

2. 文件数据库操作

以下示例展示了如何创建持久化的文件数据库:

import 'dart:io';
import 'package:sqlite3/sqlite3.dart';
import 'package:sqlite3_flutter_libs/sqlite3_flutter_libs.dart';

Future<void> initDatabase() async {
  // 确保SQLite库已加载
  await sqlite3FlutterLibs.loadLibrary();

  // 获取数据库文件路径
  final dbPath = Directory.current.path + '/my_database.db';

  // 打开文件数据库
  final db = sqlite3.open(dbPath);

  // 创建表
  db.execute('''
    CREATE TABLE IF NOT EXISTS products (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      name TEXT NOT NULL,
      price REAL NOT NULL,
      created_at INTEGER DEFAULT CURRENT_TIMESTAMP
    );
  ''');

  // 插入数据
  db.execute(
    'INSERT INTO products (name, price) VALUES (?, ?)',
    ['Flutter Book', 49.99]
  );

  // 查询数据
  final result = db.select('SELECT * FROM products');
  for (final row in result) {
    print('Product: ${row['name']}, Price: ${row['price']}');
  }

  // 关闭数据库
  db.dispose();
}

3. 参数化查询

使用参数化查询可以提高性能并防止SQL注入攻击:

void parameterizedQueryExample() {
  final db = sqlite3.openInMemory();

  db.execute('''
    CREATE TABLE users (
      id INTEGER PRIMARY KEY,
      name TEXT NOT NULL,
      age INTEGER
    );
  ''');

  // 使用参数化插入
  db.execute(
    'INSERT INTO users (name, age) VALUES (?, ?)',
    ['Charlie', 30]
  );

  // 使用参数化查询
  final age = 30;
  final result = db.select(
    'SELECT * FROM users WHERE age > ?',
    [age]
  );

  for (final row in result) {
    print('User: ${row['name']}, Age: ${row['age']}');
  }

  db.dispose();
}

文章总结

ohos_sqlite3_demo 是一个功能完善的Flutter SQLite数据库组件,专为OpenHarmony系统进行了适配优化。通过该组件,开发者可以在OpenHarmony平台上轻松实现本地数据存储功能,包括内存数据库和文件数据库两种模式。

该组件的主要优势包括:

  • 提供简洁易用的Dart API,与官方SQLite包接口保持一致
  • 支持完整的SQLite功能,满足大多数本地数据存储需求
  • 经过OpenHarmony平台测试验证,确保兼容性和稳定性
  • 通过AtomGit进行版本管理,方便开发者获取和更新

使用该组件时,需要注意以下几点:

  • 确保在 pubspec.yaml 中正确配置依赖覆盖,使用OpenHarmony适配版本
  • 数据库操作完成后,及时调用 dispose() 方法释放资源
  • 对于文件数据库,注意处理好文件路径和权限问题

通过本文的介绍,相信开发者能够快速上手使用该组件,为OpenHarmony平台上的Flutter应用添加本地数据存储功能。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐