Flutter 本地数据库sqflite实战操作 通过本文章将带你了解sqflite如何使用并管理,注意要学习本功能、要具备一定的sql数据库操作的基础知识! 知识点: 本地化列表数据 本地化列表详情数据 sqflite 本地化数据库增删改查操作 一、安装sqflite https://pub.flutter-io.cn/packages/sqflite 二、 StepTasksDb/StepTasksDb.dart 三、编辑Db文件 StepTasksDb.dart全部代码 import 'package:path/path.dart'; import 'package:sqflite /sqflite.dart'; // 定义数据库Mock模型 final String tableName = 'step_task_table'; //
5、MapCache作为内存缓存,sqflite作为磁盘缓存,那么好,LRU怎么实现呢? CacheDataProvider作为磁盘缓存操作的具体实现类,主要是一些数据库的操作,以及偷懒的LRU实现: import 'package:path/path.dart'; import 'package:sqflite /sqflite.dart'; ///缓存数据库名字 const String dbName = "data.db"; ///缓存表名字 final String tableCache = "table_cache
和尚刚刚学习一下关于数据存储方面的小知识点,用 sqflite 对数据库进行基本操作。sqflite 为三方 pub 通用的引入方式。和尚仅对数据库的基本操作进行学习整理。 集成方式 pubspec.yaml 中添加 sqflite: any; 在相应的 .dart 文件中添加引用 import 'package:sqflite/sqflite.dart'; 根据需求对数据存储进行具体的 创建数据库 sqflite 创建数据库时优先创建一个路径,用来存储数据库。注:对于数据库的操作都是耗时操作,都要通过 async 和 await 异步处理。 【删】删除数据 借助 rawDelete 或 db.delete 对数据库表进行数据删除,和尚测试删除 id = 0和1 的对应数据,sqflite 内部已处理好,若数据库表不存在也不会报异常
image.png ---- 二、SQLite 数据库的全平台支持 sqflite 目前已经支持了 Android、 iOS, 和 MacOS 平台;对 Windows 和 Linux 的支持,可以使用 sqflite_common_ffi image.png ---->[pubspec.yaml]---- dependencies: #... sqflite: ^2.0.2+1 # 数据库 sqflite_common_ffi: ^2.1.1 # 数据库 复制代码 ---- 1. 关于数据库的路径 sqflite 中有一个 getDatabasesPath 的方法,用于获取数据库文件夹路径: Android: data/data/<package_name>/databases 打开数据库 由于 windows 和 linux 使用的是 sqflite_common_ffi 所以开启数据库的方式不同。
以上代码查看 data_persistence_main.dart文件 Sqflite Flutter实现数据库存储需要通过插件 sqflite来实现,写文章的时候最新的版本是 sqflite 1.1.3 ,但是该版本需要 flutter 1.2以上才行,所以我选择的是 sqflite 1.1.0,小伙伴可以根据自己的 flutter版本选择相应的 sqflite版本。 sqflite 的基本操作语句,在文档中已经写得非常明白了,所以就不搬运了,这边直接讲下对于数据库的一些封装处理吧,因为打开数据库是一个很消耗资源的一个过程,所以呢,推荐实现单例会比较好。
SQLite pub地址:https://pub.flutter-io.cn/packages/sqflite SQLite Github:https://github.com/tekartik/sqflite 添加依赖 SQLite 并不是 Flutter 系统自带的,而是一个第三方插件,在项目的 pubspec.yaml 文件中添加依赖: dependencies: sqflite: ^1.3.1 import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; import 'package:sqflite /sqflite.dart'; class DBProvider { static final DBProvider _singleton = DBProvider.
1. pubspec.yaml引入 sqflite: 1.3.2+1 path_provider: ^1.6.24 2.代码 import 'package:flutter/material.dart '; import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; import 'package:path_provider
和尚在很久之前尝试过 SQL 数据库的应用,但在实际场景中用到的比较少,一直没有后续研究;今天和尚根据实际应用对 SQL 进行一个简单的小封装; SQL 和尚继续采用 sqflite 注意事项 1. join() 方法找不到 和尚在刚开始初始化连接数据库时,提示 join() 方法找不到;其原因是和尚只引入了 package:sqflite/sqflite.dart,还需要引入
同样的方法,我们需要在pubspec.yaml文件中引入 sqflite: >=0.8.5 然后调用flutter packages get 最后在自己的Dart文件中引入 import ‘package :sqflite/sqflite.dart’; 即可在Flutter使用Sqlite 同样的,我慢还是先贴代码: 首先,我们需要获取一下我们数据库存储的目录,数据库名字为name.db 然后建立库和数据表
2.2 SQLite数据库 SQLite是一种轻量级的关系型数据库,Flutter提供了SQLite数据库的支持,可以通过dart语言的sqflite库进行操作。 dependencies: sqflite: ^2.0.0 path_provider: ^2.0.0 安装完成后,在需要使用的Dart文件中导入sqflite库。 import 'package:sqflite/sqflite.dart'; import 'package:path_provider/path_provider.dart'; import 'package import 'package:flutter/material.dart'; import 'package:sqflite/sqflite.dart'; import 'package:path_provider 需要引入第三方库(如sqflite)来实现数据库操作。 对于简单的数据存储需求,使用SQLite可能显得过于复杂。 5.
Layer in Flutter Flutter widgets 状态管理 依赖包的选择 data layer http:推荐使用 dio,当然可以自己封装 数据存储:shared_preferences,sqflite
解决方案使用sqflite插件:展开代码语言:DartAI代码解释//file_repository.dartclassFileRepository{Database? title:title,content:content,parentId:parentId,createdAt:now,updatedAt:now,isFolder:isFolder,);}}经验总结sqflite StateManagementflutter_bloc:^8.1.6bloc:^8.1.4equatable:^2.0.8#Storagepath_provider:^2.1.5shared_preferences:^2.5.4sqflite
依赖库说明 dio (非常好用的网络请求库) FlutterToast mmkv_flutter shared_preferences url_launcher image_picker (图片选择) sqflite
例如,如果要添加sqflite库: 将它添加到文件后,运行flutter packages get,这样就好了。各种各样的库使开发Flutter应用程序变得轻而易举,并为开发过程节省了大量时间。 使用sqflite库,我们可以非常快速地启动并运行SQLite数据库。感谢单件模式,我们可以访问数据库并从几乎任何地方都可以进行查询,而无需每次都重新创建一个对象。
path_provider[20] 2.1.1[21] 2.1.4[22] path_provider 已适配 8 local_auth[23] 2.1.6[24] 2.3.0[25] local_auth 已适配 9 sqflite [26] 2.2.8+4[27] 2.3.3+1[28] flutter_sqflite 已适配 10 permission_handler[29] 10.3.2[30] 11.3.1[31] flutter_permission_handler gitcode.com/openharmony-tpc/flutter_packages/tree/br_local_auth-v2.3.0_ohos/packages/local_auth [26] sqflite : https://pub.dev/packages/sqflite [27] 2.2.8+4: https://gitcode.com/openharmony-sig/flutter_sqflite [28] 2.3.3+1: https://gitcode.com/openharmony-sig/flutter_sqflite/tree/br_v2.3.3+1_ohos [29] permission_handler
Flutter推荐使用sqflite插件操作SQLite数据库。
32 sqflite_common[33] 2.5.0 原 2.4.5+1 提供了与 SQLite 数据库交互的通用接口,支持跨平台的数据存储和查询。 pub.dev/packages/quiver [32] flutter_cache_manager: https://pub.dev/packages/flutter_cache_manager [33] sqflite_common : https://pub.dev/packages/sqflite_common [34] visibility_detector: https://pub.dev/packages/visibility_detector
flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin()); com.tekartik.sqflite.SqflitePlugin.registerWith (shimPluginRegistry.registrarFor("com.tekartik.sqflite.SqflitePlugin")); flutterEngine.getPlugins
sqflite:数据库的形式存储数据,适合存储大量数据。 路由管理 什么是路由?简单的理解就是页面的跳转,从一个页面跳转到另一个页面。路由管理就是对这些页面跳转到管理。
3、使用Sqflite轻量数据库 SharedPrefernces 的使用固然方便,但这种方式只适用于持久化少量数据的场景,我们并不能用它来存储大量数据,比如文件内容(文件路径是可以的)。