我发现有两种使用Remember API声明变量的方法。
第一个是:
@Composable
fun abc() {
var aa = remember { mutableStateOf(true) }
}
Run Code Online (Sandbox Code Playgroud)
第二个是:
@Composable
fun abc() {
var aa by remember { mutableStateOf(true) }
}
Run Code Online (Sandbox Code Playgroud)
两者之间有功能上的区别吗?或者它们只是为了方便?
我听说定义屏幕和路由的最流行的方法是使用密封类
,但我无法直观地理解这种方式。
首先是为什么使用密封类。还有其他类,包括默认类。
第二个问题是为什么在密封类中使用对象。
我认为第二个问题与单身人士有关。但为什么 screen 应该是单例呢?
这是我所看到的代码
sealed class Screen(val route: String) {
object Home: Screen(route = "home_screen")
object Detail: Screen(route = "detail_screen")
}
Run Code Online (Sandbox Code Playgroud) 在 ViewModel 中,remember不使用,但mutable...使用:
class CustomViewModel : ViewModel() {
// ...
var myDeckList = mutableStateListOf<Deck>()
// ...
}
Run Code Online (Sandbox Code Playgroud)
是否ViewModel有类似于remember规定的委托责任?
如果是这样,为什么mutable...不委托?
代码参考:https://www.youtube.com/watch?v =Kw4_i4l5y4s&ab_channel=PhilippLackner
我对此代码有两个问题
@Composable
fun ProfileSection(
modifier: Modifier = Modifier
) {
Column(modifier = Modifier.fillMaxWidth()) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 20.dp)
){
RoundImage(
image = painterResource(id = R.drawable.messi1),
modifier = Modifier
.size(100.dp)
.weight(3f)
)
Spacer(modifier = Modifier.width(16.dp))
StatSection(modifier = Modifier.weight(7f))
}
}
}
Run Code Online (Sandbox Code Playgroud)
[第3行]首先是为什么使用'modifier: Modifier = Modifier'?它究竟有何作用?
[第5行]第二个是“m”修饰符和“M”修饰符有什么区别?当将修饰符更改为修饰符时,不会出现代码错误(红色下划线)。结果不是我想要的。