swiftUI自定义Environment的Key

2023-05-16

1、创建一个结构体作为要共享的值

struct RefreshData {

    var thresold: CGFloat = 0

    var progress: Double = 0

    var refreshState: RefreshState = .invalid

}

2、把他作为 Environment 的一个键 (EnvironmentKey),这样用到这个 key 就可以获取它的默认值。

struct HeaderRefreshDataKey :EnvironmentKey {

    static var defaultValue: RefreshData = .init()

}

3、如果要改变或者修饰这个值,我们要扩写 EnvironmentValues,实现set,get方法

extension EnvironmentValues {

    var headerRefreshData: RefreshData {

        get {self[HeaderRefreshDataKey.self]}

        set{

            self[HeaderRefreshDataKey.self] = newValue

        }

    }

}

4、就这样,headerRefreshData 变成了 Environment 的 key,我们可以通过声明 @Environment(\.headerRefreshData) var headerRefreshData:RefreshData 来获取它的值,通过在 View 中 .environment(\.headerRefreshData, Setting(name: "...")) 来修改它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

swiftUI自定义Environment的Key 的相关文章

随机推荐

  • 2022-3-9 Ubuntu 16 安装opencv 4.5

    ubuntu 16安装 OpenCV 3 的教程 也是安装OpenCV 3 Ubuntu 18 安装 OpenCV 4 5 的 安装完成后 xff0c 手动创建opencv pc xff1a cd usr local lib sudo mk
  • 2022-4-21 vrep深度相机Kinect 远程c++(qtcreator) opencv 保存

    从模型库里拉出来一个Kinect相机放在合适位置 xff1a 设置好像素 xff0c 不是标准像素值vrep有警告 xff08 可能数据有误 xff09 xff0c 忽略即可 同样的像素值 xff0c 在c 43 43 端 xff1a sp
  • 20220905 buffer overflow detected

    hit 64 hit span class token operator span span class token operator span span class token operator span gitprojects span
  • 泉州IT公司名录

    超牌电子有限公司 18259571509 福建泉州超牌电子有限公司成立于1997年 xff0c 是一家自主研发 生产和销售移动电源 xff0c 应急充电器等一系列锂电池为 地址 福建泉州 主营产品 移动电源 虹科安防 18060109697
  • 2023-2-24 pagmo2安装测试

    content 安装必要依赖安装boost安装TBB 安装pagmo 安装必要依赖 安装boost 依赖boost版本大于1 68 boost官网下载 安装boost 安装包解压缩后 span class token punctuation
  • 2023-4-23 Windows和Ubuntu使用网线直连搭建局域网

    1 Windows下的配置 xff1a 右键右下角的网络图标 xff08 或者右键网络 属性 xff09 更改适配器设置 以太网 右键属性 TCP IPv4 IP地址 xff08 192 168 1 3 xff09 子网掩码 xff08 2
  • traj_out variable ‘std:ofstream’ has initializer but incomplete type

    variable 39 std ofstream has initializer but incomplete type 或者是variable 39 std ifstream has initializer but incomplete
  • perl处理excelwenjian

    usr bin perl use strict use Win32 OLE qw in with use Win32 OLE Const 39 Microsoft Excel 39 Win32 OLE Warn 61 3 die on er
  • C++ox 之 lambda

    http www cnblogs com allenlooplee archive 2012 07 03 2574119 html 今天看了博文 xff0c 之前对于lambda的理解比较粗陋 xff0c 今天再学习一下 不得不说我是一个极
  • __x_a != __x_a什么时候不成立?

    define isnan x extension typeof x x a 61 x builtin expect x a 61 x a 0 在看redis源码的时候发现了一个有趣的东西 xff0c 这个宏对是否是有效的实数进行了判断 这个
  • pthread_mutex_trylock的问题及解决

    在需要使用非阻塞的锁时 xff0c trylock是一个比较好的选择 xff0c 但是使用的时候碰见了一些问题 xff1a 需要使用PTHREAD MUTEX ERRORCHECK NP 来定义一个检错锁 xff0c 但是不管如何都编译不过
  • thrift, Protocol Buffers and MsgPack 的序列化对比

    啥是序列化 xff1f 序列化是将对象状态转换为可保持或传输的格式的过程 与序列化相对的是反序列化 xff0c 它将流转换为对象 这两个过程结合起来 xff0c 可以轻松地存储和传输数据 为啥要序列化 xff1f 1 以某种存储形式使自定义
  • python处理xlsx

    一 读取excel 这里介绍一个不错的包xlrs 可以工作在任何平台 这也就意味着你可以在Linux下读取Excel文件 首先 xff0c 打开workbook xff1b import xlrd wb 61 xlrd open workb
  • php解析请求url并返回json数据

    lt php paserRequest SERVER 34 QUERY STRING 34 function paserRequest strReq parse str strReq 解析请求参数 cpIds 61 explode 39 3
  • 对TTL电平,232电平 CMOS电平做下总结

    xff08 一 xff09 TTL电平标准 输出 L xff1a lt 0 8V xff1b H xff1a gt 2 4V 输入 L xff1a lt 1 2V xff1b H xff1a gt 2 0V TTL器件输出低电平要小于0 8
  • twemproxy for redis使用说明及简单分析

    redis的数据量在内存高过50G时系统出现了明显的瓶颈 为了解决这个问题 xff0c 笔者找了些相关的资料 xff0c 发现了这个开源软件 功能很强大 xff0c 包含了last fm的ketama的一致性hash算法 xff0c 对于笔
  • static的map成员的初始化顺序居然和编译器相关

    我十分不敢相信这是真的 xff0c 但是确实发生了 xff0c 而且足足折腾了我5个小时 core文件的内容大概是这样 xff1a 0 0x0000003071664cba in std Rb tree decrement std Rb t
  • 创建在mac电脑本地搭建nginx,并模拟打包发布前端构建包

    1 本地安装nginx服务brew install nginx 报No such file or directory 64 rb sysopen Users wangjie Library Caches Homebrew downloads
  • 关于swiftUI和UIKit混用

    思路无非就是自定义一个结构体view实现UIViewRepresentable协议 xff0c 然后就可以作为一个swiftUI组件进行调用了 1 我们要定义一个CustomView这个名字随便起 struct CustomView UIV
  • swiftUI自定义Environment的Key

    1 创建一个结构体作为要共享的值 struct RefreshData var thresold CGFloat 61 0 var progress Double 61 0 var refreshState RefreshState 61