我是新来的科特林和喷气背包作曲。所以当我开始创业的时候,我有了我的第一个问题,我无法独自解决它。当我开始将状态放在MainContent-函数中并将状态作为参数传递给TipCalcSurface时,问题就出现了。现在我遇到了以下问题:
Type mismatch: inferred type is Int but MutableState<Int> was expected
其他问题是错误类型的结果性问题,但为什么呢?如果我将类型更改为Int,则整个函数无法工作。下面是我的练习代码。
package com.example.customtippcalc
import androi
我是jetpack的新手,我试着理解remember和mutableStateOf之间的区别
换句话说,这一行之间的尊重
val text = remember{ mutableStateOf("") }
还有这个
val text = remember{ "" }
这也是
val text = mutableStateOf("")
我真的很喜欢在Compose State中使用by委托,因为它隐藏了拥有“反应”数据的样板: val message: String by remember { mutableStateOf("") }
message = "No boilerplate" 当以这种方式使用道具时,单向数据流(或道具向下,事件向上)是干净和容易的。 但是,当想要在data class中将数据分组在一起时,或者观察视图模型属性作为状态(例如:使用observeAsAState())时,我必须声明State类型的属性,例如: data class MyUiProps(
val
我对安卓流和JetPack写作很陌生,
在更改可变状态时,我试图更新UI,但这不是调用我们的可组合状态,这是我的代码
@Composable
fun Grid() {
val mainViewModel by viewModels<DashBoardViewModel>()
mainViewModel.getData()
when (val result = mainViewModel.mutableState.value) {
is Resource.Success -> {
我有一个递归树,它将叶存储在一个数组中,它作为一个单独的复合函数与每个节点一起呈现,在将叶子添加到数组末尾的情况下,所有内容都会正确地更新,但是当我删除或向下移动一个叶时,我会得到不正确的更新,感觉就像撰写是在缓存节点,尽管我正在重写所有的内容。
例如,如果我向下移动一页,数据不反映更改,如果我删除最后一页,则可以,但如果在数组中间删除一页,则最后一页将显示为已删除,即使底层数据是正确的。
data class IngredientNode(
var ingredient: Ingredient,
@JsonIgnore
var parent: IngredientNo
我有一个ViewModel,如下所示,它同时具有LiveData和Compose状态
@Suppress("UNCHECKED_CAST")
class SafeMutableLiveData<T: Any>(value: T) : LiveData<T>(value) {
override fun getValue(): T = super.getValue() as T
public override fun setValue(value: T) = super.setValue(value)
public override
我尝试使用数据类中的一个对象来更新一个可组合的对象,并按如下方式声明它:
data class CounterState(var counter: Int = 0)
.....
val counterState: CounterState by remember { mutableStateOf(CounterState(), structuralEqualityPolicy()) }
structuralEqualityPolicy()是可组合的更新策略,定义如下:
一种策略,如果MutableState的值在结构上相等(==),则它们是等价的。
如果属性计数器更改为with:counte
我被告知MutableState就像Kotlin中的MutableLiveData,MutableState fit Compose,MutableLiveDataenter code here fit XML布局。
在代码A中,我需要将数据分配给bb.value,,但是为什么直接分配给aa呢?
码A
private var aa by mutableStateOf(-1)
private var bb= MutableLiveData<Int>(-1)
fun onEditDone() {
aa = 2
bb.value = 2
}
在我的应用程序中,我有LazyColumn显示的项目列表。我的列表可以更新字段,有时还可以重新排序项目。每当我有重新排序的项目,我需要显示列表的第一个项目在顶部。我想出了像下面这样的设置。列表仅在第一个重新排序事件时滚动到顶部。在使用reorder = true连续更新列表时,我的列表不会滚动到顶部。在Compose中,通过从ViewModel发送状态来重置列表滚动位置(甚至强制重建compose列表)的更好的方法是什么?
class ViewItemsState(val items: List<ViewItem>, val scrollToTop: Boolean)
class
我试图逐行读取文件,每一行都是LazyList中的一个新项目。我有一个流程,我会订阅,听每一行新的。
class LogcatService(private val coroutineScope: CoroutineScope) {
private var _mutableLogcatListener: MutableSharedFlow<String> = MutableSharedFlow(0, 1, BufferOverflow.DROP_OLDEST)
val logcatListener: SharedFlow<String> = _mutab
我试图根据两个textfield的不为空将我的loginEnabled值更改为true或false,但是我当前的实现总是返回false,有人能看到我犯了什么错误吗?我的电子邮件和密码状态是使用两个textfield中的onValueChange函数更新的
@Composable
fun LoginScreen() {
var email by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
var passwordVisibility by reme
我今天开始学习jetpack compose,当我使用NavHost时,我有一个渲染预览问题 java.lang.IllegalStateException: ViewModels creation is not supported in Preview
at androidx.compose.ui.tooling.ComposeViewAdapter$FakeViewModelStoreOwner$1.getViewModelStore(ComposeViewAdapter.kt:709)
at androidx.navigation.compose.NavHostKt.NavHost(N