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

网站建设课程报告论文网站搭建公司排行

网站建设课程报告论文,网站搭建公司排行,程序员外包公司是什么意思,怎么在百度上创建网站android的登录功能和前端一样,需要保存登录的用户信息。 创建一个工具类 // 用户工具类,用于管理用户登录状态和用户信息 object AppUserUtil {// 常量定义private const val LOGGED_FLAG "logged_flag" // 登录状态的键名private const va…

android的登录功能和前端一样,需要保存登录的用户信息。

  1. 创建一个工具类
// 用户工具类,用于管理用户登录状态和用户信息
object AppUserUtil {// 常量定义private const val LOGGED_FLAG = "logged_flag" // 登录状态的键名private const val USER_INFO = "user_info"     // 用户信息的键名private const val TAG = "AppUserUtil"         // 日志标签// 登录状态属性var isLogged: Boolean// 获取登录状态,默认值为 falseget() = DataStoreUtils.readBooleanData(LOGGED_FLAG, false)// 设置登录状态,并同步保存到 DataStoreset(value) = DataStoreUtils.saveSyncBooleanData(LOGGED_FLAG, value = value)// 用户信息属性var userInfo: UserInfo?// 获取用户信息,从 DataStore 中读取并反序列化为 UserInfo 对象get() = DataStoreUtils.readStringData(USER_INFO).fromJson()// 设置用户信息,并同步保存到 DataStoreset(value) = DataStoreUtils.saveSyncStringData(USER_INFO, value = value?.toJson() ?: "")// 登录方法fun onLogin(userInfo: UserInfo) {isLogged = true               // 设置登录状态为 truethis.userInfo = userInfo      // 保存用户信息Log.d(TAG, "onLogin: $userInfo") // 打印登录日志}// 登出方法fun onLogOut() {isLogged = false              // 设置登录状态为 falsethis.userInfo = null          // 清空用户信息}
}
  1. 发起登录请求,登录成功,则调用工具类的onLgoin方法
 private fun login() {viewModelScope.launch {flow {emit(service.login(viewStates.account.trim(), viewStates.password.trim()))}.map {if (it.errorCode == 0) {if (it.data != null) {HttpResult.Success(it.data!!)} else {throw Exception("the result of remote's request is null")}} else {throw Exception(it.errorMsg)}}.onEach {AppUserUtil.onLogin(it.result)_viewEvents.send(LoginViewEvent.PopBack)}.catch {_viewEvents.send(LoginViewEvent.ErrorMessage(it.message ?: ""))}.collect()}}
  1. 一些页面,如果未登录,是不能使用的,这个时候我们可以取出isLogged 属性进行判断。

@ExperimentalFoundationApi
@Composable
fun CollectPage(navCtrl: NavHostController,scaffoldState: ScaffoldState,viewModel: CollectViewModel = hiltViewModel()
) {val viewStates = viewModel.viewStatesval collectPaging = viewStates.pagingData?.collectAsLazyPagingItems()val webUrls = viewStates.urlListval titles = viewStates.titlesval isRefreshing = viewStates.isRefreshingval listState =if ((collectPaging?.itemCount ?: 0) > 0) viewStates.listState else LazyListState()DisposableEffect(Unit) {Log.i("debug", "onStart")viewModel.dispatch(CollectViewAction.OnStart)onDispose {}}Column(modifier = Modifier.fillMaxSize().padding(bottom = BottomNavBarHeight)) {AppToolsBar(title = "我的收藏")if (!AppUserUtil.isLogged) {EmptyView(tips = "点击登录",imageVector = Icons.Default.Face) {RouteUtils.navTo(navCtrl, RouteName.LOGIN)}} else {collectPaging?.let {RefreshList(it, listState = listState, isRefreshing = isRefreshing, onRefresh = {viewModel.dispatch(CollectViewAction.Refresh)}) {if (!webUrls.isNullOrEmpty()) {stickyHeader {ListTitle(title = titles[1].text)}item {FlowRow(modifier = Modifier.padding(10.dp)) {webUrls?.forEachIndexed { index, website ->LabelTextButton(text = website.name ?: "标签",modifier = Modifier.padding(end = 10.dp, bottom = 10.dp),onClick = {RouteUtils.navTo(navCtrl,RouteName.WEB_VIEW,WebData(website.name, website.link!!))})}}}}stickyHeader {ListTitle(title = titles[0].text)}if (collectPaging.itemCount > 0) {items(collectPaging) { collectItem ->CollectListItemView(collectItem!!,onClick = {RouteUtils.navTo(navCtrl,RouteName.WEB_VIEW,WebData(collectItem.title, collectItem.link))})}}}}}}
}

参考资料:

  1. https://github.com/RicardoJiang/wanandroid-compose

文章转载自:

http://qUpdxnXX.qrnbs.cn
http://1msVurpk.qrnbs.cn
http://YedyZXKv.qrnbs.cn
http://T9nKlk39.qrnbs.cn
http://ygqo1Dqe.qrnbs.cn
http://vW9OpCAy.qrnbs.cn
http://P4q9SBmP.qrnbs.cn
http://9ClaF47w.qrnbs.cn
http://9FGOcF5t.qrnbs.cn
http://nmWEMhfU.qrnbs.cn
http://tEpzamE3.qrnbs.cn
http://7BtS8Ubb.qrnbs.cn
http://Y7xPqFmA.qrnbs.cn
http://bTe5gC8Z.qrnbs.cn
http://EL6BmNd1.qrnbs.cn
http://bsGSA09V.qrnbs.cn
http://KUQpNT5O.qrnbs.cn
http://m1Nna9mN.qrnbs.cn
http://DuWCy5LH.qrnbs.cn
http://VE18uBkK.qrnbs.cn
http://jGuhF9sq.qrnbs.cn
http://gf1gIEqB.qrnbs.cn
http://OnyNbgaW.qrnbs.cn
http://JdFw0Gqf.qrnbs.cn
http://QvU4ZqjA.qrnbs.cn
http://i0m8cDOI.qrnbs.cn
http://5LXaqtEc.qrnbs.cn
http://1OVyVQoN.qrnbs.cn
http://yxDkoacz.qrnbs.cn
http://ka15L1Do.qrnbs.cn
http://www.dtcms.com/wzjs/693734.html

相关文章:

  • 企业网站运营推广难做吗快影
  • 检测网站打开速度wordpress 3.7
  • 餐饮公司 网站建设中国建筑协会官网
  • 广州建设教育网站少儿戏曲知识 网站建设
  • 揭阳网站建设策划方案免费网站转app
  • 手机app制作费用优化游戏的软件
  • 盈佳国际天天做赢家网站关于苏宁易购网站建设的不足之处
  • 石家庄心雨网站建设wordpress 文章字符数
  • 衡水做网站公司北京网站建设最新消息
  • cnzz网站建设教学建设银行官方网站登录
  • 制作展示型网站公司哪家好学用php做网站
  • 湖南易图做推广送网站网站建设 怎么跑业务
  • 江苏省建设工程竣工备案网站门户网站建设要多少钱
  • 哪些网站是python做的国际最好的摄影作品网站
  • 搭建电商网站物流专线做网站
  • 电影网站的代理怎么做贵阳设计网站
  • 大学生网站建设实训报告平昌移动网站建设
  • 七星彩网站开发广州天河酒店网站建设
  • 广州建设网站企业普宁房产网
  • 山东省住房和城市建设厅网站信息管理网站开发实验报告
  • 互联网站产品开发的流程网站开发者调试模式
  • flash网站后台有哪个网站可以学做面条开面馆
  • 网站建设加数据库人力资源网站建设方案
  • 单位门户网站建设工作建议制作书签的方法和步骤
  • 微网站建设服务商wordpress实现用户中心
  • 电商网站建设合同怎么做网站播放器
  • 做网站公司青浦如何设计一个自己的网页
  • 网站开发设计比赛外贸网站建设策划
  • 上海做网站的公司哪家好石家庄关键词优化平台
  • 婚纱摄影类网站多商户wordpress