Flutter 官方状态管理 Provider基本使用

当App的复杂性发展到一定程度,就会出现一个页面中不同深度的子Widget需要共享访问同一个数据状态,甚至不同页面需要共享同一个状态的情况,这时我们可能会想到InheritedWidget。InheritedWidget是 Flutter 中非常重要的一个功能型组件,它提供了一种在 Widget 树中从上到下共享数据的方式,比如我们在应用的根 Widget 中通过InheritedWidget共享了一个数据,那么我们便可以在任意子Widget 中来获取该共享的数据。而Provider就是对InheritedWidget组件的上层封装,使其更易用,更易复用。具有如下一些特点:

  • 简化资源的分配/释放
  • 实现懒加载
  • 减少创建新类时的样板代码
  • 对 Flutter 开发工具友好,使你的应用状态在 Flutter 开发工具中可见
  • 提供一种常见的方式来消费这些 InheritedWidgets

在正式介绍Provider之前,让我们先来看几个Provider涉及的几个概念:

  • Provider:一个提供数据源并促进应用程序内数据访问的包。 我们可以使用 ChangeNotifier 类来创建数据, 此类可变状态,并在其中的数据发生更改时通知侦听器。
  • Consumer:用于访问数据提供者的值并跟踪其更改, 它驻留在数据提供者的小部件树中,并根据相关数据重建自身。 换句话说,作为数据的消费者,当数据发生变化时,它会自动更新。
  • Provider.of():此方法允许开发者访问小部件树中最近的数据提供者,它使开发者能够检索相关数据并跟踪更新。
  • ChangeNotifier:此类构成数据提供者的基础,通过创建一个扩展 ChangeNoti

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

115基于matlab的用于铣削动力学建模的稳定性叶瓣图分析(stablity lobe)

基于matlab的用于铣削动力学建模的稳定性叶瓣图分析(stablity lobe),程序已调通,可直接运行。 115matlab铣削动力学 (xiaohongshu.com)

生活常识-如何开社保证明(四川)

下载并打开天府市民云APP 注册后登陆 点击社保服务 点击社保证明 点击【四川省社会保险个人社保证明名(近24个月)】 点击下载 下载后点击【QQ发送给好友,然后发送给自己的电脑设备(我的电脑)】

Pthon Request库源码解读之__init__.py

首先我们需要了解下这个文件的功能: init.py 文件在 Python 中有多种用途,但当我们讨论通过 pip 安装的插件或包时,其主要用途是为了确保: 包的结构完整性: 当你尝试导入一个包(文件夹)时&#…

数据类型-变量-内存四区-指针

1、内存四区 1.1、数据类型的本质 1)数据类型基本概念 类型是对数据的抽象类型相同的数据具有相同的表示形式、存储格式、相关的操作程序中使用的数据必定属于某种数据类型数据类型和内存 有关系C/C 引入数据类型,可以更方便地管理数据 2&#xff09…

laravel5.8中实现验证码组件的安装和验证

本篇文章主要讲解使用laravel5.8自带的验证码库实现验证码验证的效果教程。通过本教程你可以快速接入到自己的项目中开发相应的验证功能。 作者:任聪聪 (rccblogs.com) 日期:2023年12月17日 实际效果 安装步骤 步骤一、输入命令 composer require mews…

beego使用布局文件和模板文件进行页面渲染

在 Beego 框架中的控制器基类 Controller 中自定义一个方法,用于渲染模板文件并设置模板数据。 func (this *IndexController) display(tplname string) {this.Layout this.moduleName "/layout.html"this.TplName tplnamethis.LayoutSections make(…

小程序开发与移动应用开发有哪些区别?

小程序开发与移动应用开发:差异何在? 在数字化浪潮下,小程序和移动应用已成为人们日常生活中不可或缺的一部分。但你是否真正了解小程序开发与移动应用开发之间的区别?这篇文章将为你揭开两者之间的神秘面纱。 一、运行环境不同…

不限带宽是否意味着无限带宽

当今互联网发展迅速的时代,带宽成为了网络连接速度的重要指标之一。而对于许多用户来说,无限带宽似乎是一个理想的选择。不限带宽并不等于无限带宽。我将解释不限带宽的含义,并探讨其与无限带宽之间的区别。 不限带宽是指网络服务提供商&…

夸克 自动脚本 每次挖到自动输代码

一个bash脚本,功能是持续运行一个名为`mint-dft`的Yarn CLI命令,并在出现错误时自动重试。 代码解释: 1. `#!/bin/bash`: 这是shebang行,告诉系统使用/bin/bash来解析和执行这个脚本。 2. `export NODE_OPTIONS=--max_old_space_size=49152`: 这一行设置了环境变…

Navicat 年度报告 (2023) | 不忘初心,砥砺前行

#SUMMARY#年度报告 时光荏苒,转眼时间来到 2023 年与 2024 年交汇处。回顾 2023,数据库行业跌宕起伏,暗流涌动。作为数据库工具提供商 Navicat,我们也面临着诸多挑战与压力。一直以来,我们以用户体验为先、技术为本&a…

代理模式:中间者的故事

代理模式:中间者的故事 介绍需求分析代理模式代码实现代理模式整理和用途第一种用途第二种用途第三种用途第四种用途 总结 介绍 本文引用《大话设计模式》第七章节的内容进行学习分析,仅供学习使用 需求:小明拜托自己好朋友小王给他朋友小美…

Swift函数式编程——函数

目录 Swift函数式编程-函数 高阶函数(Higher order function) 一等函数(First class function) 闭包 函数柯里化(Function Curring) 函数式思维 使用函数解决问题 使用函数组合 总结 Sw…

解决IDEA 不能正确识别系统环境变量的问题

问题描述 本人laptop 上的是设置了GOOGLE_APPLICATION_CREDENTIALS 这个环境变量的, 正常java or python 的程序能基于这个环境变量使用 某个gcp service account 去访问GCP的资源 [gatemanmanjaro-x13 ~]$ env | grep -i google GOOGLE_APPLICATION_CREDENTIALS/…

2023年,写博客带给我的收获与成长

文章目录 前言写博客的心路历程膜拜写博客大佬博客大佬带来的诱惑尝试写博客坚持写博客 决定写博客的原因2023年写博客的成就博客的创作粉丝的增长博客专家成就商务合作 2024年对技术写作的展望 前言 没错,我就是那个考试睡大觉、作文空白交卷的王二蛋。面对写作&a…

Tensor轴变换 axis 或 dim(transpose、permute、view、reshape、einsum)

操作分类: 重排维度:transpose、swapaxes、permute都是对维度进行重排序,但不改变维度的大小。 重组维度:view、reshape可以重组原始维度,修改维度大小。 万能运算:einsum 通过操作index(dim/axis)来匹配…

SpringBoot2.7-集成Knife4j

Knife4j 是什么 Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案 添加依赖 <!--引入Knife4j的官方start包,该指南选择Spring Boot版本<3.0,开发者需要注意--> <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knif…

Django Cookie和Session使用(十一)

一、Cookie Cookie具体指一小段信息&#xff0c;它是服务器发送出来存储在浏览器上的一组键值对&#xff0c;下次访问服务器时浏览器会自动携带这些键值对&#xff0c;以便服务器提取有用信息。 Cookie的特性 1、服务器让浏览器进行设置的 2、保存在浏览器本地&#xff0c;…

Permutation Importance重要性

目录 <font colorblue size4 face"楷体">算法解构<font colorblue size4 face"楷体">代码 算法解构 Permutation Importance适用于表格型数据&#xff0c;其对于特征重要性的评判取决于该特征被随机重排后&#xff0c;模型表现评分的下降程度…

免费API-JSONPlaceholder使用手册

官方使用指南快速索引>>点这里 快速导览&#xff1a; 什么是JSONPlaceholder?有啥用?如何使用JSONPlaceholder? 关于“增”关于“改”关于“查”关于“删”关于“分页查”关于“根据ID查多个” 尝试自己搭一个&#xff1f;扩展的可能&#xff1f; 什么是JSONPlaceho…

面向对象(高级)知识点强势总结!!!

文章目录 一、知识点复习1-关键字&#xff1a;static1、知识点2、重点 2-单例模式&#xff08;或单子模式&#xff09;1、知识点2、重点 3-理解main()方法1、知识点2、重点 4-类的成员之四&#xff1a;代码块1、知识点2、重点 5-关键字&#xff1a;final1、知识点2、重点 6-关键…