首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Flutter 实战】大量复杂数据持久化

老孟导读:上一篇文章讲解了 Android 和 iOS 的文件目录系统,此篇文章讲解如何使用 SQLite 保存大量复杂数据数据。...,用户看到的是空白页面,而如果本地保存了部分新闻,则显示这部分数据,等待最新的数据返回时在刷新即可,对用户体验来说,明显第二种体验更佳。...SQLite 是目前最受欢迎的本地存储框架之一,此篇文章将会介绍如何使用 SQLite 保存、查询、删除数据等。...添加依赖 SQLite 并不是 Flutter 系统自带的,而是一个第三方插件,在项目的 pubspec.yaml 文件中添加依赖: dependencies: sqflite: ^1.3.1...单例模式创建 SQLite 访问 使用 SQLite 并不是一定要使用单例模式,单例模式是为了保证整个应用程序仅有一个数据库实例和全局访问。

2.2K30

FlutterUnit 桌面分支合并,一套代码 - 五端通行

为了让移动端在 稳定版 SDK 上开发符合大多数人的场景,所以选择新建分支让桌面端用 master 版本的 SDK 尝鲜体验。...image.png ---- 二、SQLite 数据库的全平台支持 sqflite 目前已经支持了 Android、 iOS, 和 MacOS 平台;对 Windows 和 Linux 的支持,可以使用...image.png 如下代码也放在 DbOpenHelper 中,在程序开始是调用 setupDatabase 方法,为 windows 设置 sqlite3.dll 的加载文件夹: ---->[DbOpenHelper...---- 三、运行项目与窗口优化 在 AndroidStudio 中可以选择对应的对应的桌面设备来运行: image.png ---- 1....另外这样也更容易分工,现实中可以让桌面端的 UI 实现交给不同的人实现,毕竟要支持桌面端,就注定有人要多干活。 对于一些差别不太大的界面,可以在构件时进行适配。

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Flutter中的本地存储

    在自己的Dart文件中引入插件即可正常使用了 import ‘package:shared_preferences/shared_preferences.dart’; 下面还是举个例子来说明下 实现输入一段字符串进行保存和获取操作...file的readString方法来获取字符串并返回泛型为String的Future对象 然后我们还是使用上面的代码通过Future的then方法来回去反悔的数据并showSnackBar 好吧,我们还是去看下...最后,我们来看下Flutter中Sqlite的用法 Sqlite ---- 和SharedPreferences和文件操作操作一样,Flutter内部并没有提供对sqlite的支持,但是官方给我们提供了第三方的支持库哦...同样的方法,我们需要在pubspec.yaml文件中引入 sqflite: >=0.8.5 然后调用flutter packages get 最后在自己的Dart文件中引入 import ‘package...:sqflite/sqflite.dart’; 即可在Flutter使用Sqlite 同样的,我慢还是先贴代码: 首先,我们需要获取一下我们数据库存储的目录,数据库名字为name.db 然后建立库和数据表

    5K30

    【测试SQLite】测试SQLite支持的SQL语句分类

    如果 sum() 的任何输入既不是整数也不是 NULL,则 sum() 返回一个浮点值,该值是数学求和的近似值。...length(X):对于字符串值 X,length(X) 函数返回在第一个 NUL 字符之前的字符数(而不是字节)。...如果 X 是数值,则 length(X) 返回 X 的字符串表示的长度。 注意,对于字符串,length(X) 函数返回字符串的字符长度,而不是字节长度。字符长度是字符串中的字符数。...为了在面对历史SQL语句时具有弹性,SQLite有时会放宽上述引用规则: 如果在允许标识符但不允许字符串字面值的上下文中使用单引号中的关键字(例如:‘key’或’glob’),那么该标记将被理解为标识符而不是字符串字面值...未来的SQLite版本可能会引发错误,而不是接受上述例外情况覆盖的格式不正确的语句。 下面列出了任何SQLite版本中可能使用的所有关键字,而不考虑编译时选项。

    36200

    Sqlite3详细解读

    整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。...注意该参数是c字符串而不是OC....如果nByte不是负的,那么它就是这个函数能从szSql中读取的字节数的最大值。如果nBytes为负,szSql在第一次遇见’/000/或’u000’的时候终止。...它属于早期遗留下来的便捷函数,这些函数存在很多缺点。当然他们依然存在就有理由——使用方便。它们的优点也仅仅是使用方便,而不是具有很好的性能。...此参数有两个常数,SQLITE_STATIC告诉sqlite3_bind_text函数字符串为常量,可以放心使用;而SQLITE_TRANSIENT会使得sqlite3_bind_text函数对字符串做一份拷贝

    3.7K10

    微信为什么使用 SQLite 保存聊天记录?

    接下来,本文将与大家共同探讨 SQLite 在过去一年中最新的 SQL 功能。 SQLite “只是”一个库,它不是传统意义上的服务器。因此,在某些场合下,它确实不合适。...如果你知道窗口函数,那么也知道这是一件大事。如果你不了解窗口功能,请你自己学习如何使用。这篇文章不会具体解释窗口函数,但请相信:它是最重要的“现代”SQL特性。...SQLite 从版本3.25.0开始,在使用over子句的聚合函数中支持了filter子句,但是在使用group by子句的聚合函数中还不支持。...这是一个特有的SQL扩展,即它不是标准SQL的一部分,因此在下面的矩阵中是灰色的。但是,SQLite遵守与PostgreSQL相同的语法来实现此功能0。该标准提供了对merge语句的支持。...派生的数据库表(如Select语句返回的查询结果集)中的列名可以通过SELECT语句、FROM语句或WITH语句来进行改变 2:据我所知,也许可以通过可更新视图或派生的列来模拟该功能。

    2.6K20

    微信为什么使用 SQLite 保存聊天记录?

    接下来,本文将与大家共同探讨 SQLite 在过去一年中最新的 SQL 功能。 SQLite “只是”一个库,它不是传统意义上的服务器。因此,在某些场合下,它确实不合适。...如果你知道窗口函数,那么也知道这是一件大事。如果你不了解窗口功能,请你自己学习如何使用。这篇文章不会具体解释窗口函数,但请相信:它是最重要的“现代”SQL特性。...SQLite 从版本3.25.0开始,在使用over子句的聚合函数中支持了filter子句,但是在使用group by子句的聚合函数中还不支持。...这是一个特有的SQL扩展,即它不是标准SQL的一部分,因此在下面的矩阵中是灰色的。但是,SQLite遵守与PostgreSQL相同的语法来实现此功能0。该标准提供了对merge语句的支持。...如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。

    1.9K10

    关于女神SQLite的疑惑(1)

    而更完整的回答是:如果你在一个表中,声明了一个 INTEGER PRIMARY KEY 的域,那么无论何时当你插入一个NULL到该域时,NULL都将被自动转换为一个整数,并且其值为该域中的最大值+1,...() 可以返回最近一次插入操作的整数主键的值。...答: SQLite有所谓动态类型匹配机制,数据库中的数据可以被储存为 INTEGER(整数), REAL(实数), TEXT(文本字符串), BLOB(二进制数据), 或者 NULL。 3....问:我刚刚将一个文本字符串插入了一个整型(INTEGER)域中!怎么回事? 3. 答:别紧张,相信我这绝对是一个特色,而不是一个BUG。 SQLite 支持所谓动态类型匹配。...在 Windows 的FAT文件系统中,据说,运行一个叫Share.exe的后台精灵进程可以解决这个问题,否则锁机制将不稳定。而据我的经验,以上场景是一个货真价实的大坑,你有一万个理由不要碰它。

    97610

    【详解】make:***libmodules2.6.32-431.el6.x86_64build:Nosuchfileordirectory.Stop

    # 这是一个简单的Python程序,用于计算两个数字的和# 首先,我们使用input函数从用户那里获取两个数字# input函数会将用户的输入作为字符串返回,因此我们需要使用int函数将其转换为整数num1...sum = num1 + num2 # 计算和# 最后,我们使用print函数将结果输出到控制台print("这两个数字的和是:", sum) # 输出结果现在,我将详细解释代码中的每一部分:​​#...首先,它调用了​​input​​函数,该函数在控制台上显示一条消息(​​"请输入第一个数字:"​​),并等待用户输入。用户输入的内容将被​​input​​函数作为字符串返回。...然后,​​int​​函数被用来将这个字符串转换为整数。最后,这个整数被赋值给变量​​num1​​。​​...在这个例子中,第一个参数是字符串​​"这两个数字的和是:"​​,第二个参数是变量​​sum​​的值。这两个参数之间用逗号分隔,当它们被打印出来时,Python会自动在它们之间添加一个空格。

    16900

    微信为什么使用 SQLite 保存聊天记录?

    接下来,本文将与大家共同探讨 SQLite 在过去一年中最新的 SQL 功能。 SQLite “只是”一个库,它不是传统意义上的服务器。因此,在某些场合下,它确实不合适。...如果你知道窗口函数,那么也知道这是一件大事。如果你不了解窗口功能,请你自己学习如何使用。这篇文章不会具体解释窗口函数,但请相信:它是最重要的“现代”SQL特性。...SQLite 从版本3.25.0开始,在使用over子句的聚合函数中支持了filter子句,但是在使用group by子句的聚合函数中还不支持。...这是一个特有的SQL扩展,即它不是标准SQL的一部分,因此在下面的矩阵中是灰色的。但是,SQLite遵守与PostgreSQL相同的语法来实现此功能0。该标准提供了对merge语句的支持。...派生的数据库表(如Select语句返回的查询结果集)中的列名可以通过SELECT语句、FROM语句或WITH语句来进行改变 2:据我所知,也许可以通过可更新视图或派生的列来模拟该功能。

    2.2K10

    微信为什么使用 SQLite 保存聊天记录?

    接下来,本文将与大家共同探讨 SQLite 在过去一年中最新的 SQL 功能。 SQLite “只是”一个库,它不是传统意义上的服务器。因此,在某些场合下,它确实不合适。...如果你知道窗口函数,那么也知道这是一件大事。如果你不了解窗口功能,请你自己学习如何使用。这篇文章不会具体解释窗口函数,但请相信:它是最重要的“现代”SQL特性。...SQLite 从版本3.25.0开始,在使用over子句的聚合函数中支持了filter子句,但是在使用group by子句的聚合函数中还不支持。...这是一个特有的SQL扩展,即它不是标准SQL的一部分,因此在下面的矩阵中是灰色的。但是,SQLite遵守与PostgreSQL相同的语法来实现此功能0。该标准提供了对merge语句的支持。...派生的数据库表(如Select语句返回的查询结果集)中的列名可以通过SELECT语句、FROM语句或WITH语句来进行改变 2:据我所知,也许可以通过可更新视图或派生的列来模拟该功能。

    10610

    CC++ 通过SQLiteSDK增删改查

    该函数返回一个整数值,代表函数的执行状态。如果函数成功执行,返回 SQLITE_OK。如果有错误发生,返回一个表示错误代码的整数值。可以通过 sqlite3_errmsg 函数获取更详细的错误信息。...该函数返回一个整数值,用于表示函数的执行状态。如果函数成功执行,返回 SQLITE_OK。如果有错误发生,返回一个表示错误代码的整数值。...回调函数返回一个整数,用于指示是否继续执行后续的 SQL 语句。如果回调函数返回非零值,sqlite3_exec 将停止执行 SQL,并立即返回。...该函数返回指向字符串值的指针,该字符串值是查询结果集中指定列的文本表示。需要注意的是,返回的指针指向 SQLite 内部的存储区,应该在使用完之后尽早释放资源。...该函数返回查询结果集中指定列的整数表示。需要注意的是,如果该列不是整数类型,或者包含的数据无法转换为整数,那么返回的结果可能不是有效的整数值。

    39610

    微信为什么使用 SQLite 保存聊天记录?

    SQLite “只是”一个库,它不是传统意义上的服务器。因此,在某些场合下,它确实不合适。但是,在相当多的其他场合,它却是最合适的选择。SQLite 号称是部署和使用最广泛的数据库引擎。...如果你知道窗口函数,那么也知道这是一件大事。如果你不了解窗口功能,请你自己学习如何使用。这篇文章不会具体解释窗口函数,但请相信:它是最重要的“现代”SQL特性。...SQLite 从版本3.25.0开始,在使用over子句的聚合函数中支持了filter子句,但是在使用group by子句的聚合函数中还不支持。...这是一个特有的SQL扩展,即它不是标准SQL的一部分,因此在下面的矩阵中是灰色的。但是,SQLite遵守与PostgreSQL相同的语法来实现此功能0。该标准提供了对merge语句的支持。...派生的数据库表(如Select语句返回的查询结果集)中的列名可以通过SELECT语句、FROM语句或WITH语句来进行改变 2:据我所知,也许可以通过可更新视图或派生的列来模拟该功能。

    1.8K50

    Flutter必备技能:轻松掌握本地存储与数据库优化技巧!

    Flutter中实现文件读写 在下面的代码中,我分别声明了三个函数,即创建文件目录函数、写文件函数与读文件函数。这里需要注意的是,由于文件读写是非常耗时的操作,所以这些操作都需要在异步环境下进行。...接下来,我通过一个例子来演示在Flutter中如何通过SharedPreferences实现数据的读写。...因为最终存入数据库的并不是实体类对象,而是字符串、整型等基本类型组成的字典,所以我们可以通过这两个方法,实现数据库的读写。...数据库只会创建一次,也就意味着onCreate方法在应用从安装到卸载的生命周期中只会执行一次。如果我们在版本升级过程中,想对数据库的存储字段进行改动又该如何处理呢?...你可以参考sqflite插件的 API文档,或是查阅 SQLite教程 了解具体的使用方法。 4 总结 首先,我带你学习了文件,这种最常见的数据持久化方式。

    98220

    Flutter开发 - 数据持久化

    这个目录在 iOS 上对应着 NSTemporaryDirectory 返回的值,而在 Android 上则对应着 getCacheDir 返回的值。...3、使用Sqflite轻量数据库 SharedPrefernces 的使用固然方便,但这种方式只适用于持久化少量数据的场景,我们并不能用它来存储大量数据,比如文件内容(文件路径是可以的)。...SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。...它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。...SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

    1.6K40

    Flutter 入门指北之数据持久化

    path_provider用于获取手机的存储文件位置,一共有三个方法 getTemporaryDirectory临时目录,在 Android 中对应的方法为 getCacheDir,而在 iOS 中对应为...NSCachesDirectory,可以通过系统检测并清除 getApplicationDocumentsDirectory缓存目录,在 Android 中对应为 AppData文件夹,在 iOS 中对应为...因为在例子中,我们保存的数据相对比较简单,所以这边就不得不说另外一种更方便的持久化方式了 shared_preferences SharedPreferences 写 Android 的小伙伴对这个应该不陌生了...以上代码查看 data_persistence_main.dart文件 Sqflite Flutter实现数据库存储需要通过插件 sqflite来实现,写文章的时候最新的版本是 sqflite 1.1.3...sqflite 的基本操作语句,在文档中已经写得非常明白了,所以就不搬运了,这边直接讲下对于数据库的一些封装处理吧,因为打开数据库是一个很消耗资源的一个过程,所以呢,推荐实现单例会比较好。

    1.5K10

    Dimple在左耳听风ARTS打卡(十三)

    ,返回其最后一个单词的长度。...如果不存在最后一个单词,请返回 0 。 说明:一个单词是指由字母组成,但不包含任何空格的字符串。...《如何像伟大的企业家一样写作》,是不是很吸引你呢,反正就是对我来说,确实值得一看。 在很多大V的建议里,写作一直都是一件必备的技能,不管你从事什么职业。...这些是本文的引言,接下来给出了15条小贴士,让大家看看如何写作,所以在这我也分享给大家。因为力求原文意思,所以我只列出原文的话,具体解释原文里也有,请移步观看。...耗时监控 智能监控 Share 一篇有观点和思考的技术文章 这周还是继续在设计模式的世界里前行中。 公众号地址: 设计模式之工厂模式(三) 爱生活,爱学习,爱感悟,爱挨踢

    43520

    【16】进大厂必须掌握的面试题-100个python面试

    全局变量: 在函数外部或全局空间中声明的变量称为全局变量。程序中的任何函数都可以访问这些变量。 局部变量: 在函数内部声明的任何变量都称为局部变量。此变量存在于局部空间而不是全局空间中。...str()– 用于将整数转换为字符串。 复数(实数,imag)– 此函数将实数转换为复数(实数,imag)。 Q13。如何在Windows上安装Python并设置路径变量?...您将如何大写字符串的第一个字母? 回答:在Python中,capitalize()方法将字符串的首字母大写。如果字符串开头已经由大写字母组成,那么它将返回原始字符串。 Q30。...回答: 由于以下三个原因,我们使用python numpy数组而不是列表: Less Memory Fast Convenient Q87。如何获取NumPy数组中N个最大值的索引?...大多数新功能属于SciPy,而不是NumPy。 Q90。您如何使用NumPy / SciPy制作3D图/可视化图像?

    16.4K30

    sqlite使用简介

    limit与mysql的不同 limit 20 offset 0 上面的例子表示取20条数据,跳过0条 相当于mysql中的limit(0,10) 比较表达式 在SQLite3中支持的比较表达式有:"=...聚合函数 SQLite中支持的聚合函数在很多其他的关系型数据库中也同样支持,因此我们这里将只是给出每个聚集函数的简要说明,而不在给出更多的示例了。...函数 说明 avg(x) 该函数返回在同一组内参数字段的平均值。对于不能转换为数字值的String和BLOB类型的字段值,如’HELLO’,SQLite会将其视为0。...count()函数返回在同一组内的数据行数。 group_concat(x[,y]) 该函数返回一个字符串,该字符串将会连接所有非NULL的x值。...total(x) 该函数不属于标准SQL,其功能和sum基本相同,只是计算结果比sum更为合理。比如当所有字段值均为NULL时,和sum不同的是,该函数返回0.0。再有就是该函数始终返回浮点型数值。

    1K50

    学习SQLite之路(四)

    限制数据访问,用户只能看到有限的数据,而不是完整的表。 汇总各种表中的数据,用于生成报告。...5、SQLite 子查询:在另一个 SQLite 查询内嵌入在 WHERE 子句中的查询。 使用子查询返回的数据将被用在主查询中作为条件,以进一步限制要检索的数据。...如果省略了 EXPLAIN 关键字或短语,任何的修改都会引起 SQLite 语句的查询行为,并返回有关 SQLite 语句如何操作的信息。...这将根据第一个参数指定的格式字符串返回格式化的日期。具体格式见下边讲解。 上述五个日期和时间函数把时间字符串作为参数。时间字符串后跟零个或多个 modifier 修饰符。...(6)SUM():求某列的和 (7)RNDOM():产生随机数 (8)ABS():求绝对值 (9)upper():字符串转成大写 (10)lower():字符串转成小写 (11)length():求字符串的长度

    1.9K80
    领券