我正在尝试访问我的房间数据库的 dao 实例,该数据库用于存储名称(我编写此代码只是为了熟悉 jetpack compose)。
我尝试在可组合函数中访问我的 dao 实例,但给出了此错误 -> 内联乐趣的计算参数中不允许进行可组合调用 Remember(calculation: () -> TypeVariable(T)): TypeVariable(T)
我的代码
@Composable
fun HomeScreen(navController: NavController){
var dao by remember{
mutableStateOf(NameDatabase.getInstance(LocalContext.current).getDao())
}
var scope = rememberCoroutineScope()
var username by rememberSaveable{ mutableStateOf("") }
Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
){
OutlinedTextField(value = username, onValueChange = {username=it})
Spacer(modifier = Modifier.height(10.dp))
Button(onClick = {
navController.navigate("showScreen/$username")
}) {
Text("Submit")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在这条线上收到错误
mutableStateOf(NameDatabase.getInstance(LocalContext.current).getDao())
具体LocalContext.current就是给出这个错误。
PS:我已经解决了这个错误,但想知道这个错误的含义是什么以及为什么我无法记住里面的dao实例。
我尝试过应用 SpaceBetween、SpaceEvenly 和 SpaceAround,但似乎没有任何效果。我的主要目标是将 iconButton 和文本放在同一行的开头和结尾。请不要参考我的 appbar 这样做,所以我只是想知道为什么这不起作用以及解决方法是什么?
Row(
modifier = Modifier.padding(30.dp),
horizontalArrangement = Arrangement.SpaceBetween
){
Text(
"NOTES",
fontSize = 30.sp,
fontWeight = FontWeight.Bold,
color = Color.White
)
IconButton(onClick = { /*TODO*/ }) {
Icon(
Icons.Filled.Search,
contentDescription = "Search",
tint = Color.LightGray
)
}
}
Run Code Online (Sandbox Code Playgroud)