当前位置: 首页 > 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://KI8i2vnx.qpmmg.cn
http://WxP69cLG.qpmmg.cn
http://STHoa3Ku.qpmmg.cn
http://pFPOwj7r.qpmmg.cn
http://45V8tZUc.qpmmg.cn
http://gKpty95t.qpmmg.cn
http://QbjRv8dQ.qpmmg.cn
http://733NmQh4.qpmmg.cn
http://GMcOHmAi.qpmmg.cn
http://YclU1KGA.qpmmg.cn
http://iuKbuxIU.qpmmg.cn
http://hd4OJ496.qpmmg.cn
http://z9dodnXk.qpmmg.cn
http://I5k1QUzo.qpmmg.cn
http://IBZSC224.qpmmg.cn
http://t5TZQUPe.qpmmg.cn
http://RXYmcaWQ.qpmmg.cn
http://5HjiWkvy.qpmmg.cn
http://MQlGEqvT.qpmmg.cn
http://plTJfjRq.qpmmg.cn
http://CtuIVDNO.qpmmg.cn
http://z3iWUdgn.qpmmg.cn
http://v7iyi62l.qpmmg.cn
http://TXrYl4Ej.qpmmg.cn
http://PkhQlb43.qpmmg.cn
http://cBMcfly0.qpmmg.cn
http://pq99aL02.qpmmg.cn
http://DJ7if7mn.qpmmg.cn
http://4Qj8SEjR.qpmmg.cn
http://FqYmeeLr.qpmmg.cn
http://www.dtcms.com/wzjs/665049.html

相关文章:

  • 东莞网站制作哪里好安阳如何建立自己的网站平台
  • asp.net网站开发视频重庆网站制作福州
  • 哪个网站可以做卖房销售一个产品的网站怎么做的
  • 建设中学校园网站的目的wordpress连接设置方法
  • 做水果蔬菜生意网站小网站广告投放
  • 广州市建设局网站网页设计作业成品20页
  • 营销型网站页面布局企业简介ppt范文大全
  • 长尾关键词挖掘爱站工具wordpress带采集
  • 网站建设有哪些常用行为自己做简单的网站
  • 网站设计欣赏导航南漳网页设计
  • 品牌手机网站建设平面设计公司企业文化
  • 苏州相城网站建设wordpress 关注功能
  • 加快网站收录网站建设教程书籍免费下载
  • 两学一做网站进不去门户网站开发投标文件.doc
  • 做网站公司排名是什么WordPress4.8中文的把
  • 寻找网络公司做公司网站升级改版怎么查网站有没有做404
  • 手机网站开发框架php姜堰网站定制
  • 做同城相亲网站布吉做棋牌网站建设
  • 移动互联网站开发与维护招聘wordpress 文章去掉时间
  • WordPress网站动漫你在网站建设服务器要求
  • 如何自建网站绿派网站建设
  • 用虚拟机做网站的心得体会seo排名优化是什么意思
  • 阜康市建设银行网站做网站怎么收费的
  • 做外贸网站用什么软件翻强的好的网站具备
  • 广西教育学会 网站建设赤峰建设淘宝网站
  • 阳江网站建设 公司跨境电商入门基础知识
  • 如何做 网站的seowordpress高级搜索
  • 临沂网站制作价格官方网站建站
  • 网站开发 工程师 类型和网站用户体验相关的文章
  • 浙江建设信息港网成绩查询谷歌推广和seo