今天跑去面试新工作和准备下一阶段面试,十一点才想到要写,所以就意思意思一下XD,之後会回来补齐的QQ
用XML写过Android UI的人应该知道EditText这个东西,他可以提供使用者输入文字,并且即时显示出来,那Jetpack Compose里面的EditText是什麽东西呢?
TextField在Jetpack Compose中使用起来跟EditText很像,都是提供给使用者的输入框,差别在於,使用TextField我们有两个变数需要处理,一个是value,负责表示要显示的内容,另一个是onValueChange,则是当使用者更新内容的时候,会执行的程序码:
TextField(
value = "text",
onValueChange = {
},
)
执行之後你会发现不管怎麽按怎麽打,这个Textfield只会显示"text"这个字串,因为我们没有在onValueChange做任何事情,为了让他的内容会变,首先我们先宣告一个变数:
private var text : String = "";
再来我们再onValueChange更新我们的text
TextField(
value = text,
onValueChange = {
text = it
},
)
在执行一次就会发现,他还是不会动!!!
为什麽呢? 这就牵扯到Jetpack Compose中使用到的状态!
MutableState是Jetpack Compose提供给使用者储存状态的一个interface:
interface MutableState<T> : State<T> {
override var value: T
}
其中value存的值就是我们要存入的状态,他其实就是一个可观察介面,所以如果要使用LiveData
和Flow也是可以的,而官网也建议了三种等价的宣告方式:
val mutableState = remember { mutableStateOf(default) }
var value by remember { mutableStateOf(default) }
val (value, setValue) = remember { mutableStateOf(default) }
那这里我们就简单宣告一个mutableState就好,注意composable的语法和一般kotlin的语法不一样,所以宣告的部分建议写在@composable里面
val mutableState = remember { mutableStateOf("") }
// A surface container using the 'background' color from the theme
TextField(
value = mutableState.value,
onValueChange = {
mutableState.value = it
},
)
於是他就动了~~~
延续昨日 今天我们来新增专案 首先需要先新增一个Addproject.vue 新增path 以及修改...
注:发文日和截图的日期不一定是同一天。 买进全家(5903)、统一超(2912) 今日损益:-7 原...
建立 Vite 专案 在你要放置专案的地方执行这个指令来建立 vue 模板的 vite 专案 # n...
在我还没真的弄坏一台Ubuntu环境之前, 其实我没想过要使用虚拟环境或是conda。 我是指,专案...
大家好! 今天开始就要学习函式库的基础了。 我们进入今天的主题吧! 物件模板 我们先来看下方的资料:...