Compose Multiplatform结合MVI模式--初步尝试

写了个简单的界面,包含功能:

1,列表中动态增加行和删除行

2,根据列表中的数据生成 json。

包含的文件或类:

1,Main.kt, 程序入口,使用 Window 即是 desktop 端。

2,View.kt, 画界面,只展示数据,没有业务逻辑。

3,ViewModel.kt,与View“绑定”,给View提供数据,及响应View接收到的用户操作。

4,Repository.kt,模拟读取数据库。

5,ViewStatus.kt,可以理解为元数据,状态。

效果:

 

程序很简单,不多说,直接贴代码

1,Main.kt

/**
 * 入口
 */
fun main() = application {
    Window(state = WindowState(), onCloseRequest = ::exitApplication, title = "记录转 JSON") {
        App()
    }
}

2,View.kt

import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.foundation.VerticalScrollbar
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.rememberScrollbarAdapter
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp

/**
 * 画界面
 */

private val viewModel: ViewModel = ViewModel()

@Composable
@Preview
fun App() {
    val dataList: MutableList<Param> = remember { viewModel.viewState.paramList }

    val options: MutableList<Pair<String, Boolean>> = mutableListOf()
    options.add(Pair("是", true))
    options.add(Pair("否", false))

    //byLazyColumn(dataList, options)
    byScrollBar(dat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值