当前位置: 首页 > news >正文

企业手机网站建设唐山微信小程序开发公司

企业手机网站建设,唐山微信小程序开发公司,网站访问量怎么增加,百度搜索引擎入口官网DataStore 概念 DataStore 可以存储两种类型的数据#xff0c;一种是 preference#xff0c;一种是 protobuf 每个进程在同一时间内仅能打开一个 DataStore 实例#xff08;或者通过其他管理手段来实现多个 DataStore 交替使用#xff09; 一个 DataStore 可以视为一张数…DataStore 概念 DataStore 可以存储两种类型的数据一种是 preference一种是 protobuf 每个进程在同一时间内仅能打开一个 DataStore 实例或者通过其他管理手段来实现多个 DataStore 交替使用 一个 DataStore 可以视为一张数据表 默认存储位置data/data/com.xxx.xxx/files/datastore/xxx.pb 快速上手 导入依赖implementation androidx.datastore:datastore-preferences:1.0.0 目标 将三个属性 name、age、habit 按照键值对的方式使用 preference 模式存储到本地 实现查询功能 datastore 主文件 新建文件 DataStoreInit.kt 用来初始化 DataStore 首先需要确定 DataStore 的名字或者可以理解为这个数据表的名字 并使用 kotlin 特有的扩展方法的语法直接把 dataStore 绑定在全局上下文即可“一次初始化全局使用” // 定义DataStore名字 private const val BASIC_DB_NAME basic_test// 全局委托实例化DataStore接收一个参数即名字 private val Context.dataStore by preferencesDataStore(name BASIC_DB_NAME)我们需要在外部定义键的类型 xxxPreferencesKey 其中的 xxx 代表类型 // 直接定义一组类型时最好这样写 private object PreferencesKeys{// 变量名大写字符为开发时使用的键名// 括号内的名字为存储到本地的键名val BASIC_NAME stringPreferencesKey(basic_name)val BASIC_AGE stringPreferencesKey(basic_age)val BASIC_HABIT stringPreferencesKey(basic_habit) }直接定义一个数据类方便我们后续直接提取出三个数据 data class basicModel(val name:String,val age:String,val habit:String)编写新类 DataStoreInit他接受一个 context 上下文作为初始化形参 所有的 CRUD 操作都在此类中进行 class DataStoreInit(private val context: Context) {... }读取数据 读取数据时需要使用 trycatch 代码块进行异常捕获 // 下面代码是固定格式不要纠结 val getBasicDB context.dataStore.data .catch {e-// 捕获异常并作出处理if(e is IOException){emit(emptyPreferences())}else{throw e} }.map {preferences -// 依据键值对的方式提取出存储的值// 格式preferences[定义的键名]// ?:类似于三元运算即左侧取出null则直接使用右侧值替换之val name preferences[PreferencesKeys.BASIC_NAME] ?: 无名氏val age preferences[PreferencesKeys.BASIC_AGE] ?: infval habit preferences[PreferencesKeys.BASIC_HABIT] ?: 清心寡欲乜有爱好// 把所有数据存储到数据类并将它返回basicModel(name, age, habit) }写入数据 数据写入需要使用挂起函数故调用该方法时也要使用协程作用域 // 挂起函数接收三个参数作为值输入 suspend fun insertBasicDB(name: String,age: String,habit: String):String{return try {// 依据键值对存储即可context.dataStore.edit {preferences -preferences[PreferencesKeys.BASIC_NAME] namepreferences[PreferencesKeys.BASIC_AGE] agepreferences[PreferencesKeys.BASIC_HABIT] habit}基础数据插入成功}catch (e:Exception){println(e)基础数据插入失败} }主 UI 主页面配置三个输入框加一个插入按钮、一个查询按钮、一个清空表单按钮 功能大体解释 判断输入框有任意一个为空则不允许插入根据返回值判断成功与否并弹出 Toast使用协程作用域 rememberCoroutineScope 进行读写操作 Composable fun DataStoreViewInit(navHostController: NavHostController){// 三个主要变量记得remembervar name by remember {mutableStateOf(tom)}var age by remember {mutableStateOf(100)}var habit by remember {mutableStateOf(play)}// 定义协程作用域用于数据读写val scope rememberCoroutineScope()Column(Modifier.fillMaxHeight().fillMaxWidth(),verticalArrangement Arrangement.Center,horizontalAlignment Alignment.CenterHorizontally) {TextField(value name, onValueChange {nameit}, label { Text(text 用户名)})TextField(value age, onValueChange {ageit}, label { Text(text 年龄)})TextField(value habit, onValueChange {habitit}, label { Text(text 密码)})// 保存数据按钮Button(onClick {// 判断编辑框均非空if(name!age!habit!){scope.launch {// 保存数据val res DataStoreInit(MainContext).insertBasicDB(name, age, habit)DialogUtil(MainContext).showSimpleToast(res)}}else{DialogUtil(MainContext).showSimpleToast(请填完所有信息)}}) {Text(text 提交信息)}// 查询数据按钮Button(onClick {try {scope.launch {// 查询数据// 由于挂起函数返回类型为一个flow类型对象所以使用collect取出值即可DataStoreInit(MainContext).getBasicDB.collect {name it.nameage it.agehabit it.habit}}DialogUtil(MainContext).showSimpleToast(已经取出数据)}catch (e:Exception){DialogUtil(MainContext).showSimpleToast(完蛋了找不到数据)}}) {Text(text 查询信息)}// 清空表单按钮Button(onClick {nameagehabit}) {Text(text 清空表单)}} }补上一个我封装的弹出 Toast 的小工具类 class DialogUtil(private val context: Context) {fun showSimpleToast(str:String){Toast.makeText(context,str,Toast.LENGTH_SHORT).show()} }
http://www.hkea.cn/news/14365522/

相关文章:

  • 网站空间域名维护协议金属材料网站建设
  • 做设计的有什么网站wordpress推荐链接
  • 怎么做报名网站画册设计说明
  • 南通手机建站模板ios wordpress fixed
  • 赣州市建设局建管科网站工作作风方面对照检查材料
  • 网站建设有没有资质电商网站开发图书
  • dz门户做视频网站从什么网站找做app的代码
  • 网站使用手册成都代理记账
  • 建网站找兴田德润开个游戏工作室要多少钱
  • 开个网站建设公司多少钱官方网站查询电工证
  • 建设门户网站的公司替换wordpress
  • 贸易公司寮步网站建设哪家好刚学完网站开发
  • 成都环境建设网站加快网站打开速度
  • 做网站泰安南昌商城建设
  • 如何评价一个企业网站做的好百度首页登录入口
  • 方太网站谁做的上海专业做网站
  • 《奖励自己的网站》中国设计师联盟网站
  • 可以做反链的网站湛江有哪些网站建设公司
  • 医疗行业网站怎么做做网站会用到什么语言
  • 济南做网站推广有哪些公司wordpress网站转app
  • 网站规划书包括哪些方面系统与网站的区别
  • 网站备案的好处有哪些深圳建筑设计招聘
  • 在学做网站还不知道买什么好潜江资讯网二手房出售
  • 网站设计扁平化关键词密度查询站长工具
  • 硅云wordpress多站点鞍山微信小程序开发公司
  • 云南城市建设职业学院成绩查询网站互联网行业数据分析
  • 广州注册个体户流程及费用网站优化具体做哪些事情
  • 网站开发接口文档模板网站怎么做能快速有排名
  • 汽车之家 网站建设网站在百度的图标显示不正常显示
  • 网站建设推广哪个好鹤壁集团网站建设