如何解决如何使用 ViewModel 成功地将我的 LiveData 从我的存储库传递到我的 Compose UI?
我正在尝试将直播事件从广播接收器传递到我的主页的标题。 我成功地将一个字符串从广播接收器传递到我的存储库,但最终我的标题始终为空。我错过了什么? 我的存储库如下所示:
showDialog(
context: context,builder: (context) {
return AlertDialog(
content: Column(
mainAxisSize: MainAxisSize.min,children: [
TextField(
controller: categoryNameController,keyboardType: TextInputType.text,maxLines: 1,decoration: Inputdecoration(
labelText: 'Category Name',hintMaxLines: 1,border: OutlineInputBorder(
borderSide:
BorderSide(color: Colors.green,width: 4.0))),),SizedBox(
height: 30.0,RaisedButton(
onpressed: () {
if (categoryNameController.text.isNotEmpty) {
var expenseCategory = ExpenseCategory(
categoryNameController.text,id: _addExpenseController.expenseCategories.length);
_expenseController.addExpenseCategory(expenseCategory);
_addExpenseController.expenseCategories
.add(expenseCategory);
Get.back();
}
},child: Text(
'ADD CATEGORY',style: TextStyle(color: Colors.white,fontSize: 16.0),color: Colors.redAccent,)
],elevation: 12.0,shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0)));
});
然后在我的 viewmodel 中:
object Repository {
fun getAndSendData (query: String): String{
return query
}
}
最后在我的 Composable 中:
private val _data = mutablelivedata<String>()
val repoData = _data.switchMap {
liveData {
emit(Repository.getAndSendData(it))
}
}
解决方法
我认为我们不能使用 compose(jetpack) 中的实时数据,因为它可以从主线程运行。我将 onCommit() {} 与 compose 的接口一起使用。
onCommit() {
viewModel.testCountriesList(object : NetworkCallBack {
override fun test(response: GeneralResponse) {
if(response.code == 200) {
counties = response.response
responseState.value = true
} else {
responseState.value = false
}
}
})
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。