Anu*_*ngh 4 android kotlin android-jetpack-compose
我正在尝试访问我的房间数据库的 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实例。
Phi*_*hov 12
LocalContext.current标记为 且@Composable只能在另一个@Composable函数内使用。rememberlambda 被标记为@DisallowComposableCalls, 从名字上就可以明白它不允许可组合调用。所以它与 无关mutableStateOf,仅与相关remember。
您可能会遇到与副作用相同的问题,例如LaunchedEffect或事件回调,例如clickable- 在这些情况下,没有,@DisallowComposableCalls因为这些不是内联函数,并且回调将在@Composable范围内调用。
您需要读取函数外部的值:
val context = LocalContext.current
var dao by remember {
mutableStateOf(NameDatabase.getInstance(context).getDao())
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4826 次 |
| 最近记录: |