From ff59eb9415d3df520df98e14ef66d9a3d9804c5b Mon Sep 17 00:00:00 2001 From: Runt <qingingrunt2010@qq.com> Date: Sun, 18 May 2025 17:50:11 +0000 Subject: [PATCH] 封装dialog,popup,loading弹框, 优化权限申请 优化文件选择 --- libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 46 insertions(+), 2 deletions(-) diff --git a/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt b/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt index 8ecb0d2..12fedd1 100644 --- a/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt +++ b/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt @@ -7,14 +7,18 @@ import android.util.Log import androidx.activity.ComponentActivity import androidx.core.content.FileProvider -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.runt.open.mvi.base.BaseActivity import com.runt.open.mvi.base.LayoutView +import com.runt.open.mvi.data.LoadingState +import com.runt.open.mvi.data.MessageState +import com.runt.open.mvi.data.PopupMessage import com.runt.open.mvi.retrofit.AndroidScheduler import io.reactivex.Observable import io.reactivex.Observer import io.reactivex.schedulers.Schedulers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow import okhttp3.Callback import okhttp3.OkHttpClient import okhttp3.Request @@ -35,7 +39,18 @@ var TAG = ""; protected var mActivity : BaseActivity<LayoutView<BaseViewModel> , BaseViewModel>? = null - var verifyResult = MutableLiveData<Int>() + + private val _isLoading = MutableStateFlow(LoadingState()) + val isLoading = _isLoading.asStateFlow() + + val messageSetDismiss = { + _messageState.value = _messageState.value.copy(isVisible = false); + } + private val _messageState = MutableStateFlow(MessageState(isVisible = false, setDismiss = { })) + val messageState = _messageState.asStateFlow() + + private val _popupState = MutableStateFlow(PopupMessage(isVisible = false,"","")) + val popupState = _popupState.asStateFlow() open fun onCreate(activity : BaseActivity<LayoutView<BaseViewModel> , BaseViewModel>) { mActivity = activity @@ -46,6 +61,35 @@ return mActivity!!; } + fun showLoading(message : String = "加载中...") { + _isLoading.value = LoadingState(isVisible = true,message = message); + } + + fun hideLoading() { + _isLoading.value = _isLoading.value.copy(isVisible = false); + } + + fun showDialog( title:String = "", message: String = "", confirmText:String = "确定", cancelText:String = "", + touchOutside:Boolean = true,//空白和系统返回 是否关闭 + showClose:Boolean = false,//显示关闭图标(默认不显示) + confirmDissmiss:Boolean = true,//点击确定是否关闭 + cancelDissmiss:Boolean = true,//点击取消是否关闭 + onDismissRequest : () -> Unit = {}, + onConfirmRequest : () -> Unit = {}, ){ + + _messageState.value = MessageState(title = title, message = message, touchOutside = touchOutside, showClose = showClose, confirmText = confirmText, + cancelText = cancelText, confirmDissmiss = confirmDissmiss, cancelDissmiss = cancelDissmiss, onDismissRequest = onDismissRequest, + onConfirmRequest = onConfirmRequest, setDismiss = messageSetDismiss); + } + + fun showPopupWindow(title : String,message : String){ + _popupState.value = PopupMessage(isVisible = true,title,message) + } + + fun hidePopupWindow(){ + _popupState.value = _popupState.value.copy(isVisible = false); + } + /** * 获取用户信息 */ -- Gitblit v1.9.1