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

四川做网站的公司有哪些网站特效模板下载

四川做网站的公司有哪些,网站特效模板下载,网站 当前时间 代码,办公室装修设计appAndroid StateFlow初探 前言#xff1a; 最近在学习StateFlow#xff0c;感觉很好用#xff0c;也很神奇#xff0c;于是记录了一下. 1.简介#xff1a; StateFlow 是一个状态容器式可观察数据流#xff0c;可以向其收集器发出当前状态更新和新状态更新。还可通过其 …Android StateFlow初探 前言 最近在学习StateFlow感觉很好用也很神奇于是记录了一下. 1.简介 StateFlow 是一个状态容器式可观察数据流可以向其收集器发出当前状态更新和新状态更新。还可通过其 value 属性读取当前状态值。如需更新状态并将其发送到数据流请为 MutableStateFlow 类的 value 属性分配一个新值。 2.和Flow、LiveData联系,官网解释如下 StateFlow、Flow 和 LiveData StateFlow 和 LiveData 具有相似之处。两者都是可观察的数据容器类并且在应用架构中使用时两者都遵循相似模式。 但请注意StateFlow 和 LiveData 的行为确实有所不同 StateFlow 需要将初始状态传递给构造函数而 LiveData 不需要。当 View 进入 STOPPED 状态时LiveData.observe() 会自动取消注册使用方而从 StateFlow 或任何其他数据流收集数据的操作并不会自动停止。如需实现相同的行为您需要从 Lifecycle.repeatOnLifecycle 块收集数据流。 3.MainViewModel代码 package com.example.stateflowdemo.viewmodelimport androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.example.stateflowdemo.model.LoginUIState import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch ExperimentalCoroutinesApi class MainViewModel :ViewModel(){private val _loginUIState MutableStateFlowLoginUIState(LoginUIState.Empty)val loginUiState: StateFlowLoginUIState _loginUIStatefun login(username:String,password: String) viewModelScope.launch {_loginUIState.value LoginUIState.Loadingdelay(2000L)if(username android password 123456) {_loginUIState.value LoginUIState.Success} else {_loginUIState.value LoginUIState.Error(账号或密码不正确请重试)}} }4.LoginUIState代码: sealed class LoginUIState {object Success : LoginUIState()data class Error(val message: String) : LoginUIState()object Loading : LoginUIState()object Empty : LoginUIState() }5.测试代码 package com.example.stateflowdemoimport androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.activity.viewModels import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import com.example.stateflowdemo.databinding.ActivityMainBinding import com.example.stateflowdemo.model.LoginUIState import com.example.stateflowdemo.viewmodel.MainViewModel import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.ExperimentalCoroutinesApi OptIn(ExperimentalCoroutinesApi::class) class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingprivate val viewModel:MainViewModel by viewModels()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)initView()initViewModel()}private fun initView() {binding.btnLogin.setOnClickListener {viewModel.login(binding.etUsername.text.toString(),binding.etPassword.text.toString())}}private fun initViewModel() {lifecycleScope.launchWhenStarted {viewModel.loginUiState.collect {listOf(when (it) {is LoginUIState.Success - {Snackbar.make(binding.root,Successfully logged in,Snackbar.LENGTH_LONG).show()binding.progressBar.isVisible false}is LoginUIState.Error - {Snackbar.make(binding.root,it.message,Snackbar.LENGTH_LONG).show()binding.progressBar.isVisible false}is LoginUIState.Loading - {binding.progressBar.isVisible true}else - Unit})}}} }6.布局代码如下 ?xml version1.0 encodingutf-8? androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivitycom.google.android.material.textfield.TextInputLayoutandroid:idid/textInputLayoutandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:hintUsernameandroid:layout_marginStart20dpandroid:layout_marginEnd20dpapp:layout_constraintVertical_chainStylepackedapp:layout_constraintBottom_toTopOfid/textInputLayout2app:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.5app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentcom.google.android.material.textfield.TextInputEditTextandroid:idid/etUsernameandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:ems15 //com.google.android.material.textfield.TextInputLayoutcom.google.android.material.textfield.TextInputLayoutandroid:idid/textInputLayout2android:layout_width0dpandroid:layout_heightwrap_contentandroid:hintPasswordandroid:layout_marginTop20dpandroid:layout_marginStart20dpandroid:layout_marginEnd20dpapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.5app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/textInputLayoutcom.google.android.material.textfield.TextInputEditTextandroid:idid/etPasswordandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:inputTypetextPasswordandroid:ems15 //com.google.android.material.textfield.TextInputLayoutButtonandroid:idid/btnLoginandroid:layout_width150dpandroid:layout_heightwrap_contentandroid:textLoginandroid:layout_marginTop8dpapp:layout_constraintEnd_toEndOfid/textInputLayout2app:layout_constraintTop_toBottomOfid/textInputLayout2 /ProgressBarandroid:idid/progressBarandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:visibilitygoneapp:layout_constraintBottom_toBottomOfid/btnLoginapp:layout_constraintEnd_toEndOfid/textInputLayout2app:layout_constraintStart_toStartOfid/textInputLayout2app:layout_constraintTop_toTopOfid/btnLogin //androidx.constraintlayout.widget.ConstraintLayout7.实现的效果图如下 8.demo源码地址 https://gitee.com/jackning_admin/state-flow-sample
http://www.zqtcl.cn/news/480691/

相关文章:

  • 一小时做网站网上免费设计效果图
  • 网站如何注册域名公司主页填什么
  • 南宁国贸网站建设网站跟网页有什么区别
  • 兰州企业 网站建设短链接在线转换
  • 长沙网上商城网站建设方案导航网站系统
  • 网站更换目录名如何做301跳转网站活泼
  • 化妆品网站网页设计怎样在淘宝网做网站
  • 邢台建站湛江海田网站建设招聘
  • 免费个人网站建站能上传视频吗中国舆情在线网
  • 网站开发项目的心得体会惠州建设厅网站
  • 网站小程序怎么做北京单位网站建设培训
  • 北京市专业网站建设广州安全教育平台登录账号登录入口
  • 广州做网站的价格三个关键词介绍自己
  • 基于工作过程的商务网站建设:网页制作扬州网站建设公元国际
  • wordpress著名网站微信公众号怎么做网站链接
  • 长沙网站建设大概多少钱深圳做网站网络营销公司
  • 融资平台排行榜企业网站seo运营
  • 英文手表网站南昌装修网站建设
  • 网站建设要懂哪些技术甘肃园区网络搭建
  • go做的网站微信跳转链接生成器免费
  • 网站开发中怎么设置快捷键怎样打开用sql做的网站
  • 做餐饮企业网站的费用短视频素材免费下载网站
  • 美食优秀设计网站制作网页网站
  • 提供网站建设教学视频做淘宝美工需要知道的网站
  • 百度云可以做网站吗织梦网站下载
  • 有没有一起做游戏棋牌网站的用wordpress做商城
  • 有没有如何做网站的书常州网站推广公司哪家好
  • 金融直播间网站开发专业定制网页设计
  • 装饰公司网站开发c 网站开发实例教程
  • 专业层析成像代做网站网站建设收获