专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

七爪源码JetpackCompose刷卡刷新

  关于如何在加载项目时实现滑动刷新功能以及占位符的简短指南
  今天,许多应用程序都有需要在某个时候刷新的数据。您可以在一段时间后刷新数据或使用套接字来始终拥有最新的数据,但是如果您想要允许用户开始刷新数据的功能怎么办?
  这可以通过一个按钮来完成,但在某些情况下,更好的用户体验将是滑动刷新。今天,我们将使用Accompanist库来实现它。
  滑动刷新
  首先,让我们添加一个依赖项:implementationcom。google。accompanist:accompanistswiperefresh:0。25。1
  注意:检查是否有此依赖项的更新版本。
  接下来是创建一个简单的ViewModel,它将保存我们的数据和刷新逻辑。在这里,项目将包含随机图像和数字。这是它的样子:classMainViewModel:ViewModel(){privatevalisRefreshingMutableStateFlow(false)valisRefreshingisRefreshing。asStateFlow()privatevalcurrentTimeMutableStateFlow(Instant。now())valcurrentTimecurrentTime。asStateFlow()privatevalitemsMutableStateFlow(generateItems())valitemsitems。asStateFlow()funrefresh()viewModelScope。launch{isRefreshing。update{true}SimulateAPIcalldelay(2000)currentTime。valueInstant。now()items。valuegenerateItems()isRefreshing。update{false}}privatefungenerateItems():ListRowItem{vallistmutableListOfRowItem()for(iin1until20){list。add(RowItem(rowImagerandomImage(),numberRandom。nextInt(1,1000)))}returnlist}privatefunrandomImage(seed:Int(0。。100000)。random(),width:Int300,height:Intwidth,):String{returnhttps:picsum。photosseedseedwidthheight}}dataclassRowItem(valrowImage:String,valnumber:Int1)
  isRefreshing是一个布尔值,我们将在swipeRefreshState中使用它,我们将在后面解释。items只是包含随机图像和数字的20个项目的列表。
  现在,让我们创建我们的屏幕:ComposablefunMainScreen(viewModel:MainViewModelviewModel()){valisRefreshingviewModel。isRefreshing。collectAsState()。valuevalcurrentTimeviewModel。currentTime。collectAsState()。valuevalitemsviewModel。items。collectAsState()。valuevalswipeRefreshStaterememberSwipeRefreshState(isRefreshingisRefreshing)SwipeRefresh(stateswipeRefreshState,onRefreshviewModel::refresh,modifierModifier。fillMaxSize()。padding(vertical32。dp,horizontal16。dp)){Column{Text(textWelcometoSwipetoRefresh!,styleMaterialTheme。typography。h5,modifierModifier。fillMaxWidth(),textAlignTextAlign。Center)Spacer(modifierModifier。height(32。dp))Text(textcurrentTime。toString(),modifierModifier。fillMaxWidth(),textAlignTextAlign。End)Spacer(modifierModifier。height(8。dp))LazyColumn{items(items){Item(rowItemit)}}}}}ComposablefunItem(rowItem:RowItem){Card(modifierModifier。fillMaxWidth()。padding(vertical8。dp),elevation4。dp){Row(modifierModifier。fillMaxWidth()。padding(16。dp),verticalAlignmentAlignment。CenterVertically,){Image(painterrememberAsyncImagePainter(rowItem。rowImage),contentDescriptionrowItem。number。toString(),modifierModifier。size(64。dp))Spacer(modifierModifier。width(16。dp))Text(textNumber:{rowItem。number})}}}
  我们正在收集我们的状态并使用isRefreshing的值创建swipeRefreshState。我们将这个状态传递给SwipeRefresh,但如果需要,我们也可以访问它的属性isRefreshing和isSwipeInProgress。在SwipeRefresh中,我们有一个标题、当前时间和项目列表。每行项目只显示一个图像和数字。
  SwipeRefresh具有三个强制参数:state:SwipeRefreshState可以提升以控制和观察SwipeRefresh更改的状态对象onRefresh:()Unit完成滑动刷新手势时调用的Lambdacontent:Composable()Unit包含可组合滚动的内容
  一些有趣的可选参数是:swipeEnabled:Boolean布局是否应该对滑动手势做出反应refreshTriggerDistance:Dp触发刷新的最小滑动距离indicatorAlignment:Alignment指标的对齐方式。默认为Alignment。TopCenterindicatorPadding:PaddingValues指标的内容填充,如果需要可以插入指标indicator:Composable(state:SwipeRefreshState,refreshTrigger:Dp)表示当前状态的指标。默认情况下,这将使用SwipeRefreshIndicator
  对于指标参数,您可以创建自己的可组合项,但该库为我们提供了SwipeRefreshIndicator,这是我们可以使用的非常好的可组合项。
  它需要两个参数:state:SwipeRefreshState传递到SwipeRefresh指示器块的SwipeRefreshStaterefreshTriggerDistance:Dp触发刷新的最小滑动距离
  一些可选参数是:fade:Boolean箭头在滚动时是否应该淡入淡出,默认为truescale:Boolean指示器在滚动时是否应按比例放大缩小,默认为falsearrowEnabled:Boolean是否应在指标上绘制箭头,默认为truebackgroundColor:Color指示器背景表面的颜色
  还有更多参数,但不需要全部遍历。如果您想了解更多信息,请务必在官方文档中查看。
  这就是SwipeRefresh的全部内容,现在让我们实现占位符,这是来自Accompanist的另一个不错的库。
  占位符
  通常,项目的加载由某种加载微调器显示。另一种显示项目正在加载的方法是使用占位符。
  Accompanist创建了一个库,为我们提供了用于显示占位符的修饰符。实际上有两个占位符库。一个是基础,另一个是材料。建议我们使用Material,但可以随意使用您需要的任何东西。没有太大区别,API大多是等价的。在本博客中,我们使用的是Material。所以,让我们用这个命令导入它:implementationcom。google。accompanist:accompanistplaceholdermaterial:0。25。1
  注意:检查是否有此依赖项的更新版本。
  在继续MainScreen之前,让我们快速编辑MainViewModel。添加init和isLoadingStateFlow。此外,使用20个默认RowItem初始化项目。privatevalitemsMutableStateFlow(List(size20){RowItem()})valitemsitems。asStateFlow()privatevalisLoadingMutableStateFlow(true)valisLoadingisLoading。asStateFlow()init{viewModelScope。launch{delay(2000)items。valuegenerateItems()isLoading。valuefalse}}
  我们的ViewModel现在看起来像这样:classMainViewModel:ViewModel(){privatevalisRefreshingMutableStateFlow(false)valisRefreshingisRefreshing。asStateFlow()privatevalcurrentTimeMutableStateFlow(Instant。now())valcurrentTimecurrentTime。asStateFlow()privatevalitemsMutableStateFlow(List(size20){RowItem()})valitemsitems。asStateFlow()privatevalisLoadingMutableStateFlow(true)valisLoadingisLoading。asStateFlow()init{viewModelScope。launch{delay(2000)items。valuegenerateItems()isLoading。valuefalse}}funrefresh()viewModelScope。launch{isRefreshing。update{true}SimulateAPIcalldelay(2000)currentTime。valueInstant。now()items。valuegenerateItems()isRefreshing。update{false}}privatefungenerateItems():ListRowItem{vallistmutableListOfRowItem()for(iin1until20){list。add(RowItem(rowImagerandomSampleImageUrl(),numberRandom。nextInt(1,1000)))}returnlist}privatefunrandomSampleImageUrl(seed:Int(0。。100000)。random(),width:Int300,height:Intwidth,):String{returnhttps:picsum。photosseedseedwidthheight}}dataclassRowItem(valrowImage:String,valnumber:Int1)
  接下来是在我们的屏幕中收集isLoading,然后将其用作我们的占位符。我们正在向Item可组合项添加一个新参数childModifier:Modifier。Item(rowItemit,childModifierModifier。placeholder(visibleisLoading,highlightPlaceholderHighlight。fade(),))
  如您所见,该库为占位符提供了一个修饰符。必需的参数是可见的:布尔值,它确定是否应显示占位符或内容。如果visible为真,那么将有一个占位符来填充应用它的可组合项的大小,而不是内容。
  可选参数有:color:Color用于绘制占位符UI的颜色。如果提供了Color。Unspecified,则占位符将使用PlaceholderDefaults。colorshape:Shape占位符的所需形状。如果提供null,占位符将使用MaterialTheme。shapes中设置的小形状highlight:PlaceholderHighlight可选的高亮动画。有两个预先创建的占位符动画,淡入淡出和微光placeholderFadeTransitionSpec:ComposableTransition。Segment。()FiniteAnimationSpec将占位符淡入淡出屏幕时使用的转换规范。为过渡定义的布尔参数可见licontentFadeTransitionSpec:ComposableTransition。Segment。()FiniteAnimationSpec将内容淡入淡出屏幕时使用的转换规范。为过渡定义的布尔参数可见liul
  我们的MainScreen现在看起来像这样:ComposablefunMainScreen(viewModel:MainViewModelviewModel()){valisRefreshingviewModel。isRefreshing。collectAsState()。valuevalisLoadingviewModel。isLoading。collectAsState()。valuevalcurrentTimeviewModel。currentTime。collectAsState()。valuevalitemsviewModel。items。collectAsState()。valuevalswipeRefreshStaterememberSwipeRefreshState(isRefreshingisRefreshing)SwipeRefresh(stateswipeRefreshState,onRefreshviewModel::refresh,modifierModifier。fillMaxSize()。padding(vertical32。dp,horizontal16。dp)){LazyColumn{item{Text(textWelcometoSwipetoRefresh!,styleMaterialTheme。typography。h5,modifierModifier。fillMaxWidth(),textAlignTextAlign。Center)Spacer(modifierModifier。height(32。dp))Text(textcurrentTime。toString(),modifierModifier。fillMaxWidth(),textAlignTextAlign。End)Spacer(modifierModifier。height(8。dp))}items(items){Item(rowItemit,childModifierModifier。placeholder(visibleisLoading,highlightPlaceholderHighlight。fade(),))}}}}ComposablefunItem(rowItem:RowItem,childModifier:ModifierModifier,){Card(modifierModifier。fillMaxWidth()。padding(vertical8。dp),elevation4。dp){Row(modifierModifier。fillMaxWidth()。padding(16。dp),verticalAlignmentAlignment。CenterVertically,){Image(painterrememberAsyncImagePainter(rowItem。rowImage),contentDescriptionrowItem。number。toString(),modifierchildModifier。size(64。dp))Spacer(modifierModifier。width(16。dp))Text(textNumber:{rowItem。number},modifierchildModifier。fillMaxWidth())}}}
  就这样。我希望你喜欢它。
  关注七爪网,获取更多APP小程序网站源码资源!

上半年央企净利润同比增长6。1本报北京7月16日讯(记者周雷)从国务院国资委获悉,今年1月至6月,中央企业实现营业收入19。2万亿元利润总额14093。6亿元净利润10857。5亿元,同比分别增长127。16。当前严厉的环保压力下,大规模种鸡场如何快速处理废水与环保?当前严厉的环保压力下,之前我们的种鸡场比较养猪来说是没有被监管和环保压力的,大部分的规模种鸡场将养殖场的废水(自动刮粪含水量过高溢出的水清栏冲洗栏舍与日常冲洗器具的水)几乎都是直排全球通胀严重爆发,为什么就中国没事?2022年,全球进入一个极为癫狂的状态。在2月,俄乌冲突爆发,疫情开始第三波扩散能源开始暴涨,局势开始恶化,国与国争端争斗频发。多国陷入一场危机的边缘,全球面临严重通货膨胀。多国物溥仪终生无后,弟弟的三个孩子都是国家栋梁经常有人拿清朝和明朝进行对比,这完全没有可比性,至少明朝的皇帝即使上吊,都没有一个当汉H奸的,大清皇帝溥仪可是结结实实的当了一把满洲国皇帝。爱新觉罗溥仪的人生可谓是跌宕起伏,从封建曾经号称要与美元平分天下,为何一败涂地?汇率已跌破11注意,你我正在共同经历一个历史性时刻。全球经济正走向一个奇怪的十字路口。来自全球资本圈发出了一个重要信号,即欧元兑美元汇率创20年来新低,汇率甚至一度跌破一比一关口。这是什么概念?幸福男性角色被骂上热搜,看似很有出息的他,才是吸血鬼看热播剧幸福到万家,里面的几个男性角色都有着各自的性格缺点,每播到一个部分,就会有一个男性角色被骂上热搜。但里面却有这样一个角色,剧里的每一场矛盾都参与了,但是在观众骂王庆来万传家这电视这么好看,怪不得一上市就卖断货TCL今年的新款电视X11一上市就火爆市场,搭载最新一代QDMiniLED画质技术,把分区做到了两千级,画质效果远超OLED,音质上更是费了一番功夫,搭载60W安桥2。1。2HiF刘烨洋媳妇不惊艳但耐看,穿衣打扮低调朴素,俩孩子混血脸颜值高在明星家庭当中,刘烨一家四口可以说是非常受大众欢迎的,他们一家人经常会一起外出游玩过生日参加亲子活动,很多人认识刘烨和他的儿子就是因为爸爸去哪儿,如今已过去好几年了,诺一也长成了大婆婆每次住院都让儿媳陪护,孙子去医院质问姑姑和叔叔都死了吗01hr都说祖孙隔辈亲,做奶奶的都会偏疼孙子,借此拿捏儿媳。比如,奶奶会溺爱孙子,不让儿媳惩罚他,处处护短,给儿媳教育孩子使绊子。但也不是每个用这一套手段的奶奶都能成功,有些孩子很拾荒婆婆讨羊肉汤影片疯传北大硕士儿瘫痪11年背后故事更悲凉妈妈总是对子女不离不弃。山东有名拾荒婆婆讨羊肉汤的影片引起全国网民关注,婆婆站在店前,不好意思地问店家有没有卖剩的汤给他儿子喝,言谈间透露儿子瘫痪床上11年新抱在儿子出事后偷走20父母爱情原著亚菲为爱殉情,亚宁嫁王海洋,彻底改变了安杰文凉子父母爱情原著中的安杰虽然很烦她的7个孩子,但在儿女婚姻大事的问题上,可丝毫不马虎,真是操碎了心。尤其是为爱殉情的三女儿亚琼(剧中的亚菲,以下都写亚菲),不满母亲介绍的婚事,一
劝你,别去爱这样的人,你输不起文森屿鹿林好的爱情,会让彼此成为更好的自己。想遇到那么一个人,一起打拼,相互成就,相互成全,一起进步,让彼此成为更好的人。可并不是所有人都能拥有这样的幸运,能够遇到和自己一拍即合的苦难是净化剂,它使生活之酒更甜任何新事物的成长都是要经过艰难曲折,不付出极大努力,总是一帆风顺,容易得以成功,这种想法,只是幻想。一一毛泽东没有人会知道,你一个人走过的那段难熬的日子,是多么的无助和崩溃。你一定中国女篮好苗子!韩旭迎2米26接班人单场狂砍6817有望加入WNBA中国女篮将在九月下旬进行世界杯的争夺,在本次大赛的12支球队当中,中国女篮综合战力排名第二位,仅次于美国女篮。中国队之所以如此强硬,主要还是由于内线双塔韩旭和李月汝的表现过于神勇。中国电信调查长沙大厦火灾没有伤亡报告朝日观察笼罩在中国中部湖南省长沙市一座属于中国电信的高层建筑的大火已经扑灭。没有人员伤亡报告,该组织周五在中国类似Twitter的新浪微博上宣布。该组织说,它已经关闭了大楼内一些设超190万奖金李娜之后第一人!中国金花一姐新突破激怒奋力怒吼2022美网女单正赛第三轮焦点大战,张帅对阵马里诺,最终,张帅以6264完胜马里诺,在第10次美网正赛(单打)之旅实现突破,首次晋级美网女单16强。这次的美网,中国金花可谓是迎来了立陶宛有赢球的实力,但是却没有赢球的经验和运气第一节其实就是整场比赛的缩影,大比分领先以后无法控制比赛节奏被法国缩小比分只差一分。第四节在比分领先的情况下,连续失误给法国队送分!立陶宛给我的感觉是没有树立球队核心,关键球大家都毛主席临终说出最后心愿,秘书张玉凤点头答应,要用一生去履行文牛叨小史编辑牛叨小史一生倔强的毛主席在弥留之际,对陪伴自己6年的秘书张玉凤说出了一个请求,当这位小姑娘听完之后,忍住眼眶的泪水并答应主席必定会用一生去兑现承诺。毛主席对张玉凤说了但愿人长久,千里共婵娟明月几时有,把酒问青天。不知天上宫阙,今夕是何年。我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间。东坡居士不愧是千古一帝!漫漫人生路,几多风雨情。遥望琼海阁,只盼梦33年后再看张信哲,从情歌王子到孤独终老,他经历了什么?文思琦很多歌迷都不愿意接受,张信哲已经55岁的事实。因为最怕那一句,歌老了,哥也老了。张信哲的哪些歌,曾陪伴你度过无数不眠的夜晚?又或许,你曾枕着哪些歌,进入甜甜的梦乡?有歌迷如此1997年,邓小平逝世,临终前对妻子卓琳说道我还有一个心愿未了前言1997年2月19日,邓小平久病难愈与世长辞,他的妻子卓琳抱着他一遍遍地呼唤老爷子可他再也无法回应。而邓小平逝世前几天曾交代妻子卓琳,我还有一个心愿未了,一定要帮我实现。那么,周年庆摇心愿返场,嫦娥新皮超美,新赛季地图突变,澜惨遭削弱文丨可儿游戏说原创今年的周年庆马上就要开始了,对于今年周年庆的活动,很多玩家也是非常关心,即便是一些不怎么玩游戏的玩家也想知道今年周年庆还有没有限时点券活动,限时点券活动还有没有目
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网