写了个简单的界面,包含功能:
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