首页
学习
活动
专区
圈层
工具
发布

Flutter 数据持久化存储之Hive库

③ CURD 四、源码 前言   在Flutter中,有多种方式可以进行数据持久化存储。...这种方式适合存储结构化数据,可以使用JSON格式或者其他格式进行数据的读写。 SQLite数据库: 可以使用sqflite插件在Flutter应用中使用SQLite数据库。...NoSQL数据库: 一些Flutter插件(如moor)也提供了对NoSQL数据库的支持,比如使用对象数据库(如Hive)来存储数据。...冒号后面没有写版本号就是获取该库最新的版本。添加位置如下图所示: 然后点击Pub get获取对应的依赖库即可,到这里为止我们的配置工作就完成了。...你会发现没有查询,这是因为Hive提供了一个名为ValueListenableBuilder 的小部件,它只在数据库内的任何数值被修改时才会刷新。

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

    Flutter 移动端架构实践:Widget-Async-Bloc-Service

    我对状态管理和app架构的看法 过去的一年中,我构建了若干大大小小的Flutter app,期间我遇到并解决了许多问题,这让我明白了状态管理没有银弹。...然而,在构建完成并将它们一次次的重构之后,我调整出了一种在我所有项目中都能够运行完好的开发体系,因此,在本文中,我将介绍一种我定义的新的架构模式: 从现有的开发模式中借鉴了很多思想; 调整它们以满足实际开发...数据层/BLoC中的行为 1.BLoC应该是纯Dart的——没有UI代码,没有导入Flutter相关类和文件,也没有在BLoC中使用BuildContext。...API向Cloud Firestore中写入和读取数据。...无论如何,我发现BLoCs在使用Firestore构建app时效果非常明显,其中数据通过流从后端流入app。 在这种情况下,通常将流进行组合或使用RxDart对其执行转换,BLoC很擅长这个。

    20.8K20

    Flutter 2.8正式版发布了,还不来看看

    这意味着你可以在 Web 应用中拥有多个 HtmlElementView 实例而不会降低性能,同时还可以减少使用平台视图时的滚动卡顿。...此外,如果你之前没有使用过 webview 或者想复习一下,请查看 新的 webview codelab,它将带你逐步完成在 Flutter 应用中托管 Web 内容的过程。...服务,方便线上使用和体验 更方便构建认证和在实时查询 Firestore 数据的 UI 界面 Flutter 中使用 Firestore Object/Document 映射的支持进入 Alpha 版...但类似实时数据库 (Realtime Database)、分析 (Analytics)、远程配置 (Remote Config) 等 FlutterFire 插件已经在生产环境中可用了,可以选择试试看!...诚然,我们正在为世界上越来越多的开发人员构建 Flutter,但如果没有你和每位开发者的存在,我们也无法维护并构建它。Flutter 社区与众不同,感谢你所做的一切

    30.6K30

    Flutter中值得收藏的几个包

    在一些项目里,你无法避免使用一些好的第三方包,以便您可以专注于应用程序的核心逻辑。 那么我今天就给大家推荐九个。...intro_views_flutter 这是一个示例 Flutter 插件,用于在用户首次使用您的app时吸引他们,因此得名 onboarding。...使用 AES-256 进行强加密。 6.google_fonts Flutter包google_fonts允许您在 Flutter 应用程序中轻松使用?...无论您想做什么,GetX 总有一种更简单的方法。它将节省开发时间,并提供您的应用程序可以提供的最大性能。 通常,开发人员应该关注从内存中删除控制器。...对于 GetX,这不是必需的,因为默认情况下不使用资源时会从内存中删除它们。如果你想把它保存在内存中,你必须在你的依赖中明确声明“permanent: true”。

    1.8K31

    优化 Flutter 应用开发:探索 ViewModel 的威力

    想象一下,当你在手机上点击一个按钮时,背后发生了什么?按钮按下后,应用程序可能需要从服务器获取数据、更新用户界面、保存用户操作等等。...处理业务逻辑:ViewModel 包含了应用程序的业务逻辑,例如数据处理、网络请求、数据持久化等。它将业务逻辑从视图中分离出来,使得代码更加清晰和易于维护。...2.2 常见的状态管理方案:setState、Provider、GetX、Riverpod 等在 Flutter 中,有许多不同的状态管理方案可供选择,每种方案都有其自己的特点和适用场景:setState...同样地,一个 ViewModel 如果没有数据驱动,而是直接操作UI元素,那么就会导致代码混乱和耦合性增加。...数据处理和状态管理:ViewModel 负责管理视图状态和处理数据,例如加载状态、错误状态、数据处理等。

    1.1K10

    Flutter之GetX依赖注入使用详解

    Flutter 自带的路由管理从 PageA 跳转 PageB, 然后返回 PageA 再点击 find 按钮获取 User 依赖: Navigator.push(context, MaterialPageRoute...是因为在页面销毁时回收有个前提是使用 GetX 的路由管理页面,使用官方的 Navigator 进行路由跳转时页面销毁不会触发回收依赖。...这就验证了使用 GetX 路由跳转时,使用 put 默认注入依赖时,当页面销毁依赖也会被回收。...find 时不会再次初始化 User;同样的 PageB 销毁时依赖也会被回收,导致在 PageA 中获取会报错。...): page a username : 张三 id: 1643277547666 通过输出日志分析,在 PageB 中的表现与不加 fenix 表现一致,但是返回 PageA 后获取依赖并没有报错,

    2.1K31

    Flutter GetX使用---简洁的魅力!

    前言 使用Bloc的时候,有一个让我至今为止十分在意的问题,无法真正的跨页面交互!...Get.toNamed()来导航你的命名路由,不需要任何context(你可以直接从你的BLoC或Controller类中调用你的路由),当你的应用程序被编译到web时,你的路由将出现在URL中。...); 由此,可从上面推导,GetxController无法被释放的场景 不使用GetX路由 PageView,TabView等子页面 使用GetX封装的复杂组件 解决方案 这边我模拟了上面场景,写了一个解决方案...StatefulWidget,因为在这种情况,无法感知生命周期,就需要使用StatefulWidget生命周期 在dispose回调处,把当前GetxController从整个GetxController...,我也给getx提了PR,一直在审核 就算这个控件的PR通过了,集成到getx中,getx低版本也无法使用,没辙 这边我给出这个通用回收控件代码,各位可以自行复制到项目中使用 GetBindWidget

    9.1K103

    在 Flutter 使用 GetX 对话框

    在本文中,我们将探索在 Flutter 使用 GetX 的对话框。我们还将实现一个演示程序,并了解如何使用您的 Flutter 应用程序的获取包创建对话框。...获取 | Flutter Package GetX 是一个超轻和强大的解决方案 Flutter 。...我们可以使对话框利用 GetX 的基本代码和非常简单的使一个对话框。它没有利用上下文和生成器来创建对话框。 是 Flutter 问题的附加轻量强解。...这是我对使用 GetX 进行用户交互的对话框的一个小小介绍,它正在使用 Flutter 工作。 我希望这个博客将提供您充分的信息,尝试在您的 Flutter 项目使用 GetX 对话框。...使用 GetX 插件制作一个工作对话框的演示程序。在本博客中,我们已经研究了 flutter 应用程序的使用 GetX 的对话框。我希望这个博客能帮助你更好地理解这个对话框。所以请尝试一下。----

    1.1K10

    记住,永远都不要在 Flutter 中使用全局变量

    即使你正在构建小型 Flutter 应用程序,全局变量也会导致灾难。 4. 全局变量无法封装 全局变量使得无法实现封装,这是一种将代码包装到单个单元中的 OOP 概念。...如何以更好的方式管理状态 Flutter 是一个跨平台的动态框架,用于收集和处理来自用户的数据。 从开关到单选按钮,必须有效地管理数据状态。但是,全局变量会增加应用程序数据流的复杂性。...全局变量使数据很容易发生变异,这可能会导致处理从用户那里收集的数据时出现混乱。 provider 等状态管理包可用于缓解全局变量带来的问题。以下是可用于管理状态的状态包管理器和库的列表: 1....要在 Flutter 应用程序启动中开始使用 GetX,请将 get 添加到你的 pubspec.yaml 文件中: dependencies: get: 接下来,导入使用 GetX 库函数和组件时需要的...特殊功能是它在编译过程中检测错误。这将节省你的时间,因为你将在运行时将缺陷添加到你的应用程序之前修复错误。 4. Redux Redux 是一个库,可帮助你有效地管理小部件的数据状态。

    4.9K30

    GetX代码生成IDEA插件,超详细功能讲解(透过现象看本质)

    :Flutter GetX使用---简洁的魅力!...GetX封装的复杂组件 不使用GetX路由 上面的这些情况都无法自动回收GetXController;为此,我在插件里,给出了一个解决方案,区别只在view文件 通用解决方案 [autoDispose]...写个回收逻辑,然后提个PR给作者 发现getx框架已经做了这样的处理,但是,需要配套一个参数开启使用 在GetBuilder里面写了回收逻辑:对Obx刷新模块无法起效,Obx刷新控件内部无法定位到GetXController...,所以无法做回收操作 那只能从外部入手,我就写了一个通用控件,来对相应的GetXController进行回收 这个通用控件,我也给getx提了PR,一直在审核 就算这个控件的PR通过了,集成到getx中...,getx低版本也无法使用,没辙 这边我给出这个通用回收控件代码,各位可以自行复制到项目中使用 GetBindWidget 该控件可以回收单个GetXController(bind参数),可以加上对应tag

    2.1K61

    Flutter 系列之GetX的学习(1) --> 状态管理

    GetX 中的状态管理几乎不需要样板代码即可实现。 路线管理: GetX 提供了用于在 Flutter 应用程序内导航的 API。此 API 非常简单,所需代码较少。...依赖管理: GetX 提供了一种智能方法来管理 Flutter 应用程序中的依赖项,例如视图控制器。GetX 将从内存中删除任何当前未使用的控制器。...展示使用 [状态管理] 下面我们将创建一个项目, 演示Getx的使用 创建项目+启动项目 flutter create project_name cd /project_name flutter run...例如,如果你想调用你的API来填充数据,你可以忘掉老式的initState/dispose方法,只需在onInit中开始调用api,如果你需要执行任何命令,如关闭流,使用onClose()来实现。...GetBuilder有一个属性 "initState",就像StatefulWidget一样,你可以从你的控制器中调用事件,直接从控制器中调用,不需要再在你的initState中放置事件。

    93510

    Flutter 状态管理之GetX库

    Flutter 状态管理之GetX 前言 正文 一、创建项目 二、状态组件 三、状态更新UI 四、GetX库 ① 添加依赖 ② 局部刷新 ③ 全局刷新 五、源码 前言   Flutter使用的是声明式UI...使用 StatefulWidget:当小部件的外观和内容需要根据用户交互、数据变化或其他条件动态更新时,需要使用 StatefulWidget,例如表单、列表视图等。   ...① 添加依赖 在项目的pubspec.yaml文件中,将GetX添加为依赖项: dependencies: get: 添加位置如下图所示: 这里后面我并没有写版本号,这表示获取最新的版本,如需获取指定版本...,写法如下所示: dependencies: get: ^4.3.8 然后点击Pub get,获取并安装GetX库,如下图所示:   你也可以在Terminal命令行中输入flutter pub get...命令,获取并安装GetX库。

    3.2K01

    慕课甄选-Flutter零基础极速入门到进阶实战

    ,因无场景支撑,学完就忘课程采用 “Dart 语法 + Flutter 场景” 融合教学:比如讲 “Future” 时,结合 “网络请求获取数据” 场景,让你知道 “为什么要用异步”“怎么用在项目中”,...嵌套过深” 的问题;▶ 实战案例:开发 “用户登录系统”,实现 “登录成功后保存用户信息到 GetX 全局状态,所有页面可获取用户名;退出登录时清除状态,自动跳转回登录页”。...(退出 APP 后不丢失)”;检验标准:支持 “下拉刷新获取最新数据(模拟接口)、上拉加载历史数据”,本地存储用 Hive,状态管理用 GetX,双端适配无差异;讲师点评:重点检查 “状态管理逻辑是否清晰...测试优化与打包上线(1 天)测试:重点测试 “临界场景”(如 “购物车商品库存为 0 时无法添加”“订单支付后状态自动更新”“无网时显示离线缓存数据”),修复 “闪退、卡顿” 问题;优化:用 “Flutter...,优化列表滑动帧率从 30fps 到 60fps,减少接口请求错误率 50%”,面试时能讲清 “技术难点与解决方案”;课程配套 “Flutter 面试高频题汇总”(含 “状态管理选型”“Flutter

    53310

    我们弃用 Firebase 了

    的确,纯从性能上讲,在 AWS/Azure/ GCP 上构建的定制化原生服务包优于 Firebase 套件。但是,当我们考虑到开发时间和维护成本时,Firebase 通常是一个合乎逻辑的选择。...事实上,Firebase 有许多方面是我们喜欢的: 使用 Firestore,许多客户端状态管理方面的挑战都不复存在,特别是与数据新鲜度有关的问题。 免费就可拥有的实时体验。...Firestore 的文档 / 集合架构:它迫使人们仔细考虑数据建模。它还反映了一个直观的导航方案。 Firestore 中的关系数据也是如此。...我还注意到,无法在 Firebase Storage 仪表板上下载文件了;必须导航到单独的 GCP 平台。 我无法在 Firebase 仪表板上下载这个文件。...我们喜欢 Supabase 使用的 PostgreSQL。我们计划在可伸缩性方面做更多的研究,因为 SQL 数据库不能像 NoSQL 数据库那样增长。尽管如此,Supabase 来的正是时候。

    51.7K30

    Flutter状态管理--GetX的简单使用

    一、前言 Flutter开发,就需要对各种状态的管理,就是在请求数据的时候需要实时变化,各种交互变化等,在没有使用GetX之前使用Provider,用Provider的时候觉得真香,挺方便的,需要刷新的时候直接...这边介绍下GetX的使用以及常用的方法。 二、 GetX GetX 是 Flutter 上的一个轻量且强大的解决方案:高性能的状态管理、智能的依赖注入和便捷的路由管理。...1、相关优势: 1、轻量,可以模块单独编译,没有用到的功能不会编译进我们的代码 2、刷新简单, 第一种自动刷新 Obx(() => Text()) 第二中手动刷新 update() 3、跨页面交互 4、...6、国际化、主题的适配 7、获取全局的BuildContext 这个也是比较喜欢的地方,很多时候弹窗或者其他地方,需要拿到上下文,使用getx,直接获取。...,会发现这边没有 Get.put,或者Git.find, 使用的时候直接controller。

    4.3K21

    【源码篇】Flutter GetX深度剖析 | 我们终将走出自己的路(万字图文)

    我写这篇文章,并不是为GetX正名 我自问自己并不是任何一个状态框架的死忠者,Provider和Bloc,我写了相关使用、原理剖析文章和相关代码生成插件 在我心中,这类框架并没有多么神秘 因为对其原理较熟...,上手使用是一件较为容易的事,所以切换相关框架没有多大的时间成本 所以,我无需去做一个卫道者 GetX整体设计,有不少优秀点思想,我希望将这些优秀设计思路展现给大家;或许会对你设计自己的框架有一些帮助,...又是StatefulWidget 这样就可以使用它来回收实例,能解决很多场景下,GetXController实例无法回收的问题(不使用Getx路由) 我兴致冲冲的打开Getx项目,准备提PR,然后发现GetBuilder...,Getx中是在路由里面去回收这些实例的,但是,如果你没使用GetX的路由,又用Obx,你会发现,GetXController居然无法自动回收!!!...系列文章 + 相关地址 文章中Demo的Github地址:flutter_use Flutter GetX使用---简洁的魅力!

    5.4K53

    Flutter一个轻量且强大的插件:GetX 之路由管理

    GetX 是 Flutter 上的一个轻量且强大的解决方案:高性能的状态管理、智能的依赖注入和便捷的路由管理。...以往在使用路由管理时,都绕不开上下文(context),如 Navigator.pushNamed(context, '/login', arguments: arguments); 或 Navigator.pop...push到下一页,并且从栈内移除以前的所有路由 Get.offAll(LoginPage()); 可以发现,上面的push和pop方式,不需要传递context,省下了很多麻烦,这个GetX在路由管理的最大优势...Get.offNamed("/two"); push下一页并移除所有之前的页面 Get.offAllNamed("/two"); push时携带数据 主要在后面加上你要传递的数据即可 Get.toNamed...("/two", arguments: 'www.qson.tech'); 在你别名为two的页面通过Get.arguments即可获取数据。

    3.1K10

    Flutter快速开发——列表分页加载封装

    在 App 中,列表数据加载是一个很常见的功能,几乎大多数 App 中都存在列表数据的展示,而对于大数据量的列表展示,为提高用户体验、减少服务器压力等,一般采用分页加载列表数据,首次只加载一页数据,当用户向下滑动列表到底部时再触发加载下一页数据...pull_to_refresh[1]: 下拉刷新、下拉加载更多 • GetX[2]: 依赖管理、状态管理 列表分页加载封装中 GetX 主要使用到了依赖管理和状态管理,当然 GetX 除了依赖管理还有很多其他功能...,因本篇文章主要介绍列表分页的封装,不会过多介绍 GetX,关于 GetX 更多使用及介绍可参考以下文章: • Flutter之GetX集成及使用详解 • Flutter 通过源码一步一步剖析 Getx...依赖管理的实现 • Flutter之GetX依赖注入使用详解 • Flutter之GetX依赖注入tag使用详解 具体实现 前面介绍了对于列表分页加载的封装整体分为三层:State、Controller..._loadData 是数据加载的核心代码,首先创建 PagingParams 对象,即分页请求数据参数实体,创建时传入了分页的页数,值为 PagingState 中维护的分页页数 pageIndex,PagingParams

    7.1K32

    Flutter之GetX依赖注入tag使用详解

    本文主要介绍 GetX 依赖注入中 tag 的作用和使用详解。...作用 前面几篇文章介绍了 GetX 依赖注入的使用以及通过源码剖析了依赖注入的原理: •《Flutter应用框架搭建(一)GetX集成及使用详解》•《Flutter 通过源码一步一步剖析 Getx 依赖管理的实现...》•《Flutter之GetX依赖注入使用详解》 通过源码得知,GetX 依赖注入中 tag 的主要作用是用于区分相同类型依赖的不同实例。...GetX 依赖注入是通过 Map 缓存依赖关系,默认使用注入依赖的类型名称作为 key 进行缓存,当传入 tag 不为空时则使用类型名称 + tag 组合作为缓存的 key。...tag 就回到导致跳转到新的新闻详情界面显示的内容还是上一个界面的内容,因为获取到的 Controller 实例是同一个,导致数据是相同的并没有加载新的新闻内容。

    2.6K31
    领券