7得票1回答
当一个对象的属性发生变化时如何触发Jetpack-Android中的重新组合?

想象一下以下的对象 data class CourseState( val key:Int=0, val name:String="", val courses:Courses=Courses()) 实现以下设计模式 private val _courseState = mutable...

25得票2回答
Jetpack Compose NavHost 重新组合可组合多次的问题

我发现在使用Navhost compose导航时,可组合屏幕会被多次重新组合以下示例展示了如何将导航与日志集成以标识函数被调用的次数: internal sealed class Screen(val route: String) { object Splash : Screen("sp...

9得票2回答
组合 - NavHost 重组多次

在从Navhost导航时,我发现可组合屏幕正在多次重新组合。因此,我的ViewModel也多次调用API数据源。 @Composable fun MainView() { val scaffoldState = rememberScaffoldState(rememberDrawer...

8得票1回答
Jetpack Compose的TextField在输入新字符时未更新

我遵循开发者网站上这份文档。 我想从用户输入中显示文本在OutlinedTextField中,并使它在配置更改后继续存在。 使用下面的代码,当用户从键盘输入文本时,OutlinedTextField不会更新文本。 HelloContent(name = city.name, onNameC...

10得票1回答
@Immutable 在数据类中有哪些好处?

看一下Immutable的文档,这里有一个代码示例: @Immutable data class Person(val name: String, val phoneNumber: String) @Composable fun PersonView(person: Person) { ...

12得票4回答
喷气背包Compose @Stable List<T>参数重组

@Composable函数会被重新组合: 如果其中一个参数被更改,或者 如果其中一个参数不是@Stable/@Immutable 当将items: List&lt;Int&gt;作为参数传递时,compose始终会进行重新组合,无论List是否是不可变的并且无法更改。(List是没有@...

7得票1回答
当状态值改变时屏幕没有重新组合 - Jetpack Compose

这是一个视频通话屏幕。它需要令牌和频道名称才能工作,这些信息需要传递给init调用引擎。我将这些信息存储在一个数据类中,该数据类用作可变状态。 屏幕状态数据类 @Keep data class CallScreenState( val callerId: Int? = null, ...

44得票2回答
Jetpack Compose中的@Stable和@Immutable注释是什么意思?

在研究Jetpack Compose示例项目时,我看到了@Stable和@Immutable注释。我一直在查看有关这些注释的Android文档和GitHub,但我不理解。 据我所知,如果使用@Immutable,即使状态发生更改,也不应进行重新组合。然而,经过测试,重新组合会继续进行。 @St...

7得票3回答
Compose中的可见性动画

我有一段需要动画显示或隐藏的文本,取决于值是否为空。如果能够单独处理可见性就会很简单,但是现在情况并非如此。 在下面的代码中,进入动画可以正常工作,但是当文本值为空时,退出动画无法正常工作。 我想到了一些方法,例如记住旧的值,但是不确定如何实现。 @Composable fun ShowAn...

8得票1回答
Jetpack Compose 惰性列单选

我从服务器获取数据并在列表中显示,每个项目都可以通过一次单击选择以显示按钮,但我无法关闭它,只能打开它。 这是列表类的项目。 data class Task( val deviceName: String, val deviceId: String, var sel...