Runt
2025-05-18 ff59eb9415d3df520df98e14ef66d9a3d9804c5b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.runt.open.mvi.base
 
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import com.runt.open.mvi.base.model.BaseViewModel
import com.runt.open.mvi.views.LoadingDialog
import com.runt.open.mvi.views.MessageDialog
import com.runt.open.mvi.views.PopupWindow
 
/**
 * @author Runt(qingingrunt2010@qq.com)
 * @purpose
 * @date 6/2/24
 */
abstract class LayoutView<T:BaseViewModel>(var mViewModel:T) {
 
    val TAG : String = javaClass.simpleName
 
    @Composable
    fun layoutFrame(){
        val isLoading by mViewModel.isLoading.collectAsState()
        val messageState by mViewModel.messageState.collectAsState()
        val popupState by mViewModel.popupState.collectAsState()
        layout()
        // 显示 loading 弹窗
        LoadingDialog(isLoading)
        MessageDialog(messageState)
        PopupWindow(popupState)
    }
 
    @Composable
    protected abstract fun layout();
}