Я пытаюсь создать приложение, которое считывает данные из firebase firebase, а затем показывает на экране те же данные. Проблема в том, что данные появляются только при отображении в журнале, но я хочу, чтобы они были в тексте (строка) Может ли кто-нибудь помочь мне понять, как это сделать
Я уже пробовал много видео с объяснениями, но ни одно из них не работает, поэтому мой последний вариант - действительно попросить здесь о помощи.
Вот код
@SuppressLint("UnrememberedMutableState")
@Composable
fun DB () {
val db = Firebase.firestore
val collectionReference = db.collection("Inventário")
.document("Bloco E")
.collection("Sala E0.05")
val data = mutableStateOf(mapOf<String, Any>())
val job = remember { Job() }
remember {
GlobalScope.launch(Dispatchers.Main) {
val documentSnapshot = collectionReference.document("Computador").get().await()
try {
data.value = documentSnapshot.data ?: mapOf()
}catch (e: Exception){
Log.e("Firestore", "Error retrieving data", e)
}
}
}
Column() {
data.value.forEach { (key, value) ->
Text("$key: $value")}
}
}
А вот структура базы данных:
уже сделал это
Поскольку вы используете Kotlin и Jetpack Compose, я думаю, что этот ресурс поможет. Вот соответствующий репозиторий.
Ваш пост не очень помог, потому что я уже пытался использовать тот же сайт, и это не сработало, но спасибо за попытку.
Похоже, вы забыли использовать remember
на своем MutableState
(а также подавили предупреждение о ворсе с помощью (@SuppressLint("UnrememberedMutableState")
)):
val (data, setData) = remember { mutableStateOf(mapOf<String, Any>()) }
Также не рекомендуется использовать GlobalScope в Android. Вместо этого рассмотрите возможность использования LaunchedEffect:
@Composable
fun DB () {
val db = Firebase.firestore
val collectionReference = db.collection("Inventário")
.document("Bloco E")
.collection("Sala E0.05")
val (data, setData) = remember { mutableStateOf(mapOf<String, Any>()) }
LaunchedEffect(collectionReference) {
try {
val documentSnapshot = collectionReference.document("Computador").get().await()
setData(documentSnapshot.data ?: mapOf())
} catch (e: Exception) {
Log.e("Firestore", "Error retrieving data", e)
}
}
Column() {
data.value.forEach { (key, value) ->
Text("$key: $value")}
}
}
Пожалуйста, отредактируйте свой вопрос и добавьте структуру вашей базы данных в виде снимка экрана.