状态接上一章

2024-01-30 04:20
文章标签 状态 接上 一章

本文主要是介绍状态接上一章,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.状态恢复

parceable

pluginManagement {repositories {google()mavenCentral()gradlePluginPortal()}//插件plugins{id("com.android.application")version("7.1.0-alpha05")id("com.android.library")version("7.1.0-alpha05")id("org.jetbrains.kotlin.android")version("1.5.10")id("org.jetbrains.kotlin.plugin.parcelize")version("1.5.10")}}
dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()}
}rootProject.name = "JetpackComposeState"
include(":app")
package com.jmj.jetpackcomposestate.examplesimport android.os.Bundle
import android.os.Parcelable
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.versionedparcelable.ParcelFieldimport com.jmj.jetpackcomposestate.ui.theme.JetpackComposeStateTheme
import kotlinx.android.parcel.Parcelizeclass StateRecoveryParcelableActivity :ComponentActivity(){@Parcelize //自动 实现这个接口data class City(val name:String , var country:String) : Parcelableoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {JetpackComposeStateTheme {CityScreen()}}}@Composablefun CityScreen(){val (city,setCity) = rememberSaveable {mutableStateOf(City("Madrid","Spain"))}Row (verticalAlignment = Alignment.CenterVertically,modifier = Modifier.padding(10.dp)){TextButton(onClick = {setCity(City("Beijing","China")) },colors = ButtonDefaults.buttonColors()) {Text(text = "Click to change")}Text(text = "${city.country} - ${city.name}")}}
}

MapSaver

 

package com.jmj.jetpackcomposestate.examplesimport android.os.Bundle
import android.os.Parcelable
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.mapSaver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.versionedparcelable.ParcelFieldimport com.jmj.jetpackcomposestate.ui.theme.JetpackComposeStateTheme
import kotlinx.android.parcel.Parcelizeclass StateRecoveryMapActivity :ComponentActivity(){data class City(val name:String , var country:String)override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {JetpackComposeStateTheme {CityScreen()}}}@Composablefun CityScreen(){//指定 mapSaver , 用于存储时如何构建一个mao对象,获取时如何构建一个City对象val citySaver = run {val nameKey = "Name"val  countryKey = "Country"mapSaver(save = { mapOf(nameKey to it.name,countryKey to it.country) },restore = { City(it[nameKey] as String,it[countryKey] as String)})}val (city,setCity) = rememberSaveable(stateSaver = citySaver) {mutableStateOf(City("Madrid","Spain"))}Row (verticalAlignment = Alignment.CenterVertically,modifier = Modifier.padding(10.dp)){TextButton(onClick = {setCity(City("Beijing","China")) },colors = ButtonDefaults.buttonColors()) {Text(text = "Click to change")}Text(text = "${city.country} - ${city.name}")}}
}

ListSaver 

package com.jmj.jetpackcomposestate.examplesimport android.os.Bundle
import android.os.Parcelable
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.listSaver
import androidx.compose.runtime.saveable.mapSaver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.versionedparcelable.ParcelFieldimport com.jmj.jetpackcomposestate.ui.theme.JetpackComposeStateTheme
import kotlinx.android.parcel.Parcelizeclass StateRecoveryListActivity :ComponentActivity(){data class City(val name:String , var country:String)override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {JetpackComposeStateTheme {CityScreen()}}}@Composablefun CityScreen(){//指定 mapSaver , 用于存储时如何构建一个map对象,获取时如何构建一个City对象
//        val nameKey = "Name"
//        val  countryKey = "Country"
//           val citySaver = mapSaver(
//                save = { mapOf(nameKey to it.name,countryKey to it.country) },
//                restore = { City(it[nameKey] as String,it[countryKey] as String)}
//            )val citySaver = listSaver(save = { listOf(it.name,it.country) },restore = { City(it[0] as String,it[1] as String)})val (city,setCity) = rememberSaveable(stateSaver = citySaver) {mutableStateOf(City("Madrid","Spain"))}Row (verticalAlignment = Alignment.CenterVertically,modifier = Modifier.padding(10.dp)){TextButton(onClick = {setCity(City("Beijing","China")) },colors = ButtonDefaults.buttonColors()) {Text(text = "Click to change")}Text(text = "${city.country} - ${city.name}")}}
}

这篇关于状态接上一章的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/659090

相关文章

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

hdu3006状态dp

给你n个集合。集合中均为数字且数字的范围在[1,m]内。m<=14。现在问用这些集合能组成多少个集合自己本身也算。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.Inp

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

状态模式state

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/state 在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 在状态模式中,player.getState()获取的是player的当前状态,通常是一个实现了状态接口的对象。 onPlay()是状态模式中定义的一个方法,不同状态下(例如“正在播放”、“暂停

qml states 状态

states 状态 在QML中,states用于定义对象在不同状态下的属性变化。每个状态可以包含一组属性设置,当状态改变时,这些属性设置会被应用到对象上。 import QtQuick 2.15import QtQuick.Controls 2.15// 定义应用程序的主窗口ApplicationWindow {visible: true // 使窗口可见width: 640 /

[轻笔记] ubuntu Shell脚本实现监视指定进程的运行状态,并能在程序崩溃后重启动该程序

根据网上博客实现,发现只能监测进程离线,然后对其进行重启;然而,脚本无法打印程序正常状态的信息。自己通过不断修改测试,发现问题主要在重启程序的命令上(需要让重启的程序在后台运行,不然会影响监视脚本进程,使其无法正常工作)。具体程序如下: #!/bin/bashwhile [ 1 ] ; dosleep 3if [ $(ps -ef|grep exe_name|grep -v grep|

在Webmin上默认状态无法正常显示 Mariadb V11.02及以上版本

OS: Armbian OS 24.5.0 Bookworm Mariadb V11.02及以上版本 Webmin:V2.202 小众问题,主要是记录一下。 如题 Webmin 默认无法 Mariadb V11.02及以上版本 如果对 /etc/webmin/mysql/config 文件作相应调整就可以再现Mariadb管理界面。 路径+文件:/etc/webmin/mysql/config