Molecule:使用Jetpack Compose构建StateFlow流
创始人
2024-05-27 16:29:28
0

Molecule:使用Jetpack Compose构建StateFlow流

Kotlin Flow

看下面的jetpack compose片段:

@Composable
fun MessageCard(message: Message) {Column {Text(text = message.author)Text(text = message.body)}
}

这段代码最有趣的部分是它实际上是reactive。其反应性为 通过@Composable注释和委托变量抽象出来。例如,假设参数被委托给 MutableState。当Message数据变化时,会驱动Text更新。
Message是下列响应式类型之一:Message Observable Flow MessageCard() Observable Flow
最重要的是提供了composable类型的Kotlin Flow API,例如 StateFlow.collectAsState: State
代码示例如下:

@Composable
fun profilePresenter(userFlow: Flow,balanceFlow: Flow,
): ProfileModel {val user by userFlow.collectAsState(null)val balance by balanceFlow.collectAsState(0L)return if (user == null) {Loading} else {Data(user.name, balance)}
}

不像RxJava和Kotlin Flow 提供复杂的操作符,而简单使用if/else when for等逻辑判断就可以提供响应式代码。
现在的问题是:我将如何在non-composable环境中使用我的composable方法?
答案是 Molecule
https://github.com/cashapp/molecule/
Molecule做了一件事情,将一个composable方法转为FlowState 或者 Flow API之一。

/**
* Create a [Flow] which will continually recompose `body` to produce a stream of [T] values
* when collected.
*/
fun  moleculeFlow(clock: RecompositionClock,body: @Composable () -> T,
): Flow/**
* Launch a coroutine into this [CoroutineScope] which will continually recompose `body`
* to produce a [StateFlow] stream of [T] values.
*/
fun  CoroutineScope.launchMolecule(clock: RecompositionClock,body: @Composable () -> T,
): StateFlow

Molecule允许您为两种不同的重组行为传递两个时钟:

  • ContextClock将委托给MonotonicFrameClock CoroutineContext的调用方。
  • Immediate 将使生成的流在每次快照状态为失效。
    在不失去reactive的情况下编写命令式代码是极佳的选择。详细信息请查看Molecule的README文档。
    https://github.com/cashapp/molecule/blob/trunk/README.md

相关内容

热门资讯

新还珠格格,欣荣和永琪有个孩子... 新还珠格格,欣荣和永琪有个孩子?不是说永琪从来都没碰过她吗?绵忆到底是他和小燕子的还是欣荣的啊求正解...
中级会计怎么备考?今年几月考试... 中级会计怎么备考?今年几月考试?您好,很高兴为您解答中级会计师考试,教材是根本和基础,所有的题目都是...
继兴业、招商、中信后,邮储银行... (来源:现代商业银行杂志)金融资产投资公司(AIC)队伍再添新员。邮储银行近日发布公告称,该行拟以自...
中央巡视组对陕西开展两个半月常... 转自:北京日报客户端日前,中央第十五巡视组进驻陕西省,将开展为期两个半月左右的常规巡视,并会同陕西省...
柳州幻境空间在哪里 柳州幻境空间在哪里柳州幻境空间是位于广西柳州市城中区华联商闷郑城4楼的室内主题乐园,提供了各种游戏和...
中央巡视组进驻山东 联动巡视济... 转自:央视新闻客户端经党中央批准,二十届中央第六轮巡视将对16个省(自治区、直辖市)开展常规巡视,并...
继续发布暴雨蓝色预警!北京等地... 转自:央视新闻客户端中央气象台19日早6时继续发布暴雨蓝色预警。预计,19日早8时至20日早8时,青...
降妖伏魔篇演员有哪些 降妖伏魔篇演员有哪些文章舒淇程小东黄勃
晚上十一点在河边抓鱼听到有人叫... 晚上十一点在河边抓鱼听到有人叫我小名声音跟我一个朋友一样,电筒照却没有发现有人而且我女朋友也听见了不...
属猴的为什么吸引属狗的人 属猴的为什么吸引属狗的人属相狗虽不善甜言蜜语,为人多有情感之被捉,然其铅轮内心却多有向往甜蜜幸福之生...