Kotlin 中是否可以为 mutableStateOf() 提供自定义设置器

2024-05-04

我想在每次设置某个状态后两秒进行一些操作。

viewModel 内的代码:

var isLoading = mutableStateOf(LoadingState.NONE)
    set(value) {
        Timber.d("Custom Setter") //Not Firing

        //Do something when the state is set to success.
        if(value.value == LoadingState.SUCCESS){
            viewModelScope.launch {
                delay(2000L)
                dispatchEvent(//some event)
            }
        }
        field = value
    }

set{} 块根本没有运行。但该值设置正确。

当使用委托时by关键词,

Delegated property cannot have accessors with non-default implementations

有没有办法让自定义设置器适用于 Jetpack Compose 中的 mutableStateOf()?


我想你可以使用快照流 https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary#snapshotFlow(kotlin.Function0)对于这个用例。它创建了一个Flow从给定的组合State.

var isLoading by mutableStateOf(LoadingState.NONE)
    private set

init {
    viewModelScope.launch {
        snapshotFlow { isLoading }
            .collect { 
                if(it == LoadingState.SUCCESS) {
                    delay(2000L)
                    dispatchEvent(//some event)
                }
            }
    }
}

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

Kotlin 中是否可以为 mutableStateOf() 提供自定义设置器 的相关文章

  • 文件递归搜索

    我试图在根目录及其子目录中查找文件 步骤1 在指定路径中查找目录 步骤2 如果找到上述目录 则在其子目录之一中查找文件 为此 我使用下面的代码片段进行递归搜索 现在 这里的问题是 当它满足我的上述要求时 如何突破递归 boolean bFi
  • onBackPressed 仅关闭 ProgressDialog

    我意识到我的异步任务有一个小问题 我意识到 当我按 Android 设备上的后退按钮来关闭进度对话框和异步任务时 只有我的进度对话框被关闭 而我的异步任务仍在执行 我真的不知道为什么会发生这种情况 所以我只是希望有人能让我回到正确的轨道并帮
  • Android Surface 与 Canvas 的关系

    Surface 和 Canvas 之间到底是什么关系 请解释 表面是一个缓冲区 画布保存绘图 视图未附加到画布 也不是表面 窗户被绑在 Surface 和 ViewRoot 询问 随后使用的画布表面 通过要绘制的视图 详细答案你可以阅读这篇
  • 如何在状态更改时更改 Android 切换按钮的文本颜色?

    我的切换按钮对于每个状态都有不同的颜色背景 红色和白色 现在我需要在激活时更改切换按钮文本 红色 白色 的颜色 使用 xml 我无法让它工作 也许有人知道我做错了什么 我的布局 xml 中的按钮
  • com.google.android:android:jar 的 dependency.dependency.version' 丢失

    我正在尝试使用 Eclipse 运行一个简单的虚拟 Android 项目 并且我正在尝试使用 Maven amd 我已按照已接受答案的教程进行操作this https stackoverflow com questions 6735562
  • 这样理解Activity类似于iOS中的ViewController就可以了吗?

    这样理解Activity类似于iOS中的ViewController就可以了吗 我很困惑接受 Android 中的术语概念 如 活动 服务 等 是的 我想说 Activity 和 ViewController 非常相似 只有一个很大的区别
  • 如何使用 Retrofit 2 和 RxJava 处理分页

    我知道如何处理 Retrofit 响应 但在使用 rx java 处理来自 REST API 的分页时遇到问题 背景 我使用的其余 api 为我提供了以下响应 并在标题中提供了下一页的链接 HTTP 200 OK Allow GET HEA
  • 针对 Android 开发优化 Eclipse

    我使用 Eclipse 和 ADT 插件开发 Android 而且速度 很慢 我必须经常重新启动 当我打开各种 Android 项目 当我使用库项目时需要 时 情况会变得更糟 使用 ADT 插件时 是否可以进行任何具体优化来提高 Eclip
  • Android EditText默认数字键盘和允许文本[重复]

    这个问题在这里已经有答案了 可能的重复 EditText 默认带有数字键盘 但允许字母字符 https stackoverflow com questions 3544214 edittext with number keypad by d
  • 在 Android 的 Recycler View 中的文本视图背景上生成并设置随机颜色

    I am Trying to Generate Random Colors and set the Random color as background of Text View Just Like in GMail app The Tex
  • 使用 Retrofit 2 添加标头以请求

    我正在尝试发送带有身份验证标头的请求 但服务器似乎无法识别客户端 我用了this https futurestud io tutorials android basic authentication with retrofit教程 并实现了
  • 如何在谷歌地图上显示闪烁的图标

    我想在谷歌地图上显示用户的当前位置 每件事对我来说都运转良好 我只是使用标记在地图上显示当前位置 现在我想让该标记像 Android 手机上的原始谷歌地图应用程序一样闪烁 我想我必须使用动画来达到这个目的 但我不知道如何使用它 我正在互联网
  • Textview 第一次点击时为空,但第二次点击时更新

    它是使用兼容性包的小型 Android 2 2 测试应用程序 我正在尝试更新列表项选择上另一个活动的另一个片段上的文本视图 但问题是 每次第一次单击都会返回空指针异常 并且只有在第二次尝试时 其文本才会更改 我想知道为什么会发生这种情况以及
  • XML 文档结构必须在同一实体内开始和结束

    我是 eclipse 的新手 我刚刚开始编写一些代码 实际上只是从网站复制并粘贴 谁能帮我解决这个问题 错误出现在最后一行
  • Android HTTP PUT 请求

    谁能给我一个HTTP PUT请求 Android 的示例代码 假设您想使用 HttpURLConnection 要执行 HTTP PUT 请使用以下命令 URL url new URL http www example com resour
  • 应用程序启动器图标显示在活动的操作栏上

    在我的操作栏上显示应用程序图标 我不希望它出现在操作栏上 我修改了 androidmanifest xml 并删除了android icon从活动元素中 即使图标正在显示
  • DOM 中不再存在缓存元素

    就像在类似的问题中一样 我使用appium java 尝试选择元素 在移动应用程序中 我要转到页面 之后有许多元素 android widget ImageView 0 我需要选择 6 个 例如 这样的元素并执行其他步骤 Byt 只能选择一
  • startDrag 方法 已弃用且无法编译程序

    startDrag android content ClipData android view View DragShadowBuilder java lang Object int 已弃用 如何解决这个问题而又不失去对旧版本的兼容性 还有
  • 如何在运行时检查授予权限?

    In Android M 预览版 用户可以选择特定的应用程序并检索特定的权限 所以我问如何在运行时检查授予权限 您可以使用以下复制的代码https android googlesource com platform frameworks b
  • 在片段视图之间切换

    在 xml 布局文件中声明片段的标准方法是

随机推荐

  • 如何在 excel 2007 vba 中以编程方式对一组形状进行分组?

    我正在迭代电气表表上的数据并在形状表上创建形状 创建形状后 我想以编程方式对它们进行分组 但是我无法找出正确的语法 形状就在那里 被选中 如果我单击分组按钮 它们就会完美分组 但是通过下面的代码我得到 运行时错误 438 对象不支持此方法或
  • 使用 MVVM 的 C# 泛型,将 T 从 中取出

    My Model是一个泛型类 包含 例如 Value属性可以是 int float string bool 等 所以很自然地 这个类的表示形式如下Model
  • jQuery:移动窗口视口以显示新切换的元素

    我在文档中有一段 jQuery 代码片段 它可以切换包含 a 的 divtextarea div addnote area hide hide the div a addnote link click function click even
  • Storm动态拓扑

    Storm 支持动态拓扑吗 我想要的功能是在 Storm 拓扑运行时根据用户要求动态更改拓扑 例如 当用户想知道流的前 10 个单词时 我使用前 10 个 Bolt 来处理它 当用户想知道其他内容时 我使用另一个 Bolt 来处理流并 拔掉
  • 使用 jQuery 选择特定 href 的锚标记

    THE AIM 刷新浏览器后 我希望用户保留在刷新之前的菜单 内容中 问题 刷新浏览器后 用户刷新之前所在的特定菜单的内容将显示为活动状态 即显示在屏幕上 但是 该特定内容的菜单图标未显示为活动状态 即 它不显示黑色 我在选择锚元素时遇到困
  • Visual C# 窗体中的控制台

    我想在我的表单中获得一个控制台窗口 基本上当你点击button1 它运行一个批处理脚本 test exe 我不需要单独的批处理窗口 但我希望它显示在我的表单中 我认为可能有两种方法可以做到这一点 要么 1 以某种方式将控制台嵌入到我的表单中
  • PowerShell 中一个命令中的多个前景色

    我想用一个语句输出许多不同的前景色 PS C gt Write Host Red ForegroundColor Red Red 该输出为红色 PS C gt Write Host Blue ForegroundColor Blue Blu
  • 如何关闭使用presentModalViewController打开的视图控制器:

    我使用了一个视图控制器presentModalViewController 现在如何关闭 关闭它 对于 iOS6 使用此代码 self dismissViewControllerAnimated YES completion Nil 代替
  • 我怎样才能重写这个nginx“if”语句?

    例如 我想这样做 if http user agent MSIE 6 0 http user agent MSIE 7 0 etc etc rewrite ROOT ROOT ancient last break 而不是这个 if http
  • document.all 和 document.forms 之间的区别[0]

    任何人都可以解释一下两者之间有什么区别 document all 和document forms 0 please 谢谢 document all为您提供对包含文档所有元素的类数组对象的引用在 Internet Explorer 中 IE
  • 是否可以在切换 QTreeWidgetItem 复选框时创建信号?

    我使用下面的代码创建了一个也是 QTreeWidgetItem 的复选框 Populate list QTreeWidgetItem program createCheckedTreeItem QString fromStdString i
  • Google Cloud ML:输出的外部尺寸必须未知

    我们在本地得到了一个工作的导出模型 正在创建一个新的模型版本谷歌云机器学习如下 Create Version failed Model validation failed Outer dimension for outputs must b
  • JobService 在 android 9 中不会重新安排

    我正在尝试让我的应用程序在 Android 9 上运行 以下代码在 Android 8 上运行良好 但由于某种原因 JobService 不会在 android 9 上重新安排 它第一次被安排 但不会根据到设定的周期 class Retri
  • 如果为 null 则替换为 0,否则在同一列中使用默认值

    在SparkR shell 1 5 0中 创建了一个示例数据集 df test lt createDataFrame sqlContext data frame mon c 1 2 3 4 5 year c 2011 2012 2013 2
  • 使图例填满字段集中的整个宽度

    我想要一个背景legend场内的一个fieldset 我希望它占据整个宽度 但仅限于字段集中 如果我使用legend width 100 这将是wider比fieldset 这是一个例子 可以运行在JSFiddle http jsfiddl
  • AWS EMR PySpark 连接到 mysql

    我正在尝试使用 jdbc 通过 pyspark 连接到 mysql 我可以在 EMR 之外完成此操作 但是当我尝试使用 EMR 时 pyspark 无法正确启动 我在我的机器上使用的命令 pyspark conf spark executo
  • Python matplotlib:数据坐标中的位置颜色条

    我想通过指定数据坐标中的位置来将颜色条放置在散点图中 以下是指定图形坐标时它如何工作的示例 import numpy as np import matplotlib pyplot as plt Generate some random da
  • reindex 目录 URL 在 magento 中重写永无止境

    我已使用自定义导入配置文件将 6K 类别和 16K 产品导入到 magento 当我尝试重新索引时 除了 目录 URL 重写 之外的所有内容都正常工作 该 目录 URL 重写 一直显示 正在处理 但从未完成 日志和异常文件不显示任何内容 我
  • 命名 Python 记录器

    在 Django 中 我到处都有记录器 目前具有硬编码名称 对于模块级日志记录 即在视图函数的模块中 我有这样做的冲动 log logging getLogger name 对于类级别的日志记录 即在类中 init 方法 我有这样做的冲动
  • Kotlin 中是否可以为 mutableStateOf() 提供自定义设置器

    我想在每次设置某个状态后两秒进行一些操作 viewModel 内的代码 var isLoading mutableStateOf LoadingState NONE set value Timber d Custom Setter Not