我正在嘗試訪問用于存盤名稱的房間資料庫的 dao 實體(我撰寫此代碼只是為了熟悉 jetpack compose)。
我試圖在我的可組合函式中訪問我的 dao 實體,但給了我這個錯誤 - > inline fun 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")
}
}
}
我在這條線上收到錯誤
mutableStateOf(NameDatabase.getInstance(LocalContext.current).getDao())
具體LocalContext.current是給出這個錯誤。
PS:我已經解決了這個錯誤,但想知道這個錯誤是什么意思,為什么我無法記住里面的 dao 實體。
uj5u.com熱心網友回復:
您需要在函式之外讀取值:
val context = LocalContext.current
var dao by remember {
mutableStateOf(NameDatabase.getInstance(context).getDao())
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/443197.html
標籤:安卓 科特林 android-jetpack-compose
上一篇:試圖理解kotlin目標代碼塊
下一篇:初始化調色板組件
