第九十七回 自定义评分条

文章目录

  • 概念介绍
  • 实现方法
  • 示例代码

我们在上一章回中介绍了"网络综合示例"相关的内容,本章回中将介绍如何 自定义评分条.闲话休提,让我们一起Talk Flutter吧。

概念介绍

我们在本章回中介绍的评分条就是包含多个星星形状的评分条,常见于网上购物后的评价中,相信大家都见过。Flutter没有提供这样的组件,因此我们准备自己实现一个这样的组件,本章回中将详细介绍如何去实现该组件。

实现方法

  1. 创建一个星星的Icon,在Icon中设置Icon的大小和颜色;
  2. 把多个Icon放到Row中,形成一排星星Icon,用来表示评价总分值;
  3. 创建一个和步骤2中相同的星星Icon,只是颜色不同,用来表示评价实际的分值;
  4. 使用Stack组件把步骤2和步骤3中创建星星Icon叠加在一起,组成一个整体的评分条;

该方法的整体思路就是使用Stack叠加两行形状相同图标,图标的颜色不同,进而实现显示评分值和未评分值的效果。接下来我们通过具体的代码来演示该方法。

示例代码

List<Widget> ratingStar() {///用来存放已经评分的star,不过需要计算List<Widget> allStars = [];///使用参数中传入的图标,如果没有传入使用默认的star图标var star = Icon(widget.ratingedWidget.icon,color: widget.ratingedColor,size: widget.sizeOfStar,);///计算单个star占用的分数double ratingPerStar = widget.maxRating / widget.countOfStar;///计算star的数量,分整个star和部分star,整个star的数量=当前评分/单个star的分数,向下取整int fullStarCount = (widget.rating/ratingPerStar).floor();///如果整个star的数量超过评分条中图标的最大数量,那么将它设置为最大值if(fullStarCount > widget.countOfStar) {fullStarCount = widget.countOfStar;}double percentStarCount = (widget.rating/ratingPerStar)-fullStarCount;// print("per: $ratingPerStar, full: $fullStarCount , part: $percentStarCount");///把整数个star放入数组for(var i =0; i <fullStarCount;i++) {allStars.add(star);}var percentStar = ClipRect(clipper: DIYCliper(percent: percentStarCount),child: star,);allStars.add(percentStar);return allStars;
}List<Widget> unRatingStar() {return List.generate(widget.countOfStar, (index) {///使用参数中传入的图标,如果没有传入使用默认的star图标return Icon(widget.unRtingedWidget.icon,color: widget.unRatingedColor,size: widget.sizeOfStar,);});
}Stack(children: [Row(mainAxisAlignment: MainAxisAlignment.start,crossAxisAlignment: CrossAxisAlignment.center,children: unRatingStar(),),Row(mainAxisAlignment: MainAxisAlignment.start,crossAxisAlignment: CrossAxisAlignment.center,children: ratingStar(),)
]),

上面的代码和实现的方法完全相同,同时还进行了扩展:可以自定义评分的颜色以及评分条中的图标形状,就是说可以把评分条中的星星换成其它的图形。

代码中有个细节在实现方法中没有介绍,就是计算评分值,它的思路:使用当前用户输入的评分值除以总分值得到评分值,然后用该值除以每个星星代表的分值,这样就得到了星形的的数量,数量为小数,我们先把整数部分的星星修改成评分颜色(示例中为黄色),然后使用剪切方法对星星进行操作,得到不足一个星星的大小,把该大小修改成评分颜色,这样便把小数部分值也体现到了评分星星上。剪切组件相关的内容,我们在前面章回中介绍过,这里就不详细介绍了。

看官们,关于"如何自定义评分条"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安防监控视频汇聚EasyCVR修改录像计划等待时间较长,是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…

如何入门python爬虫

对于初学者,想要入门python爬虫需要注意什么,如何快速入门呢? 首先需要明白四点: 熟悉python编程了解HTML了解网络爬虫的基本原理学习使用python爬虫的一些库与框架python编程 如果你不懂python,那么需要先学习python这门非常easy的语言(相对其它语言而言)。 编程语言…

Go语言中使用kafka

1.Windows环境下安装zookeeper和kafka Windows环境下安装zookeeper和kafka 2.运行zookeeper 3.运行kaka 4.生产者 import ("encoding/json""github.com/Shopify/sarama""strconv" )type Product struct {Id intName stringTitle string…

推荐用于学习RN原生模块开发的开源库—react-native-ble-manager

如题RN的原生模块/Native Modules的开发是一项很重要的技能&#xff0c;但RN官网的示例又比较简单&#xff0c;然后最近我接触与使用、还有阅读了react-native-ble-manager的部份源码&#xff0c;发现里边完全包含了一个Native Modules所涉及的知识点/技术点&#xff0c;故特推…

Kibana+Prometheus+node_exporter 监控告警部署

下载好三个软件包 一、prometheus安装部署 1、解压 linxxubuntu:~/module$ tar -xvf prometheus-2.45.0-rc.0.linux-amd64.tar.gz 2、修改配置文件的IP地址 # my global config global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is ever…

一个月学通Python(二十九):Python获取网络资源及解析HTML页面(爬虫)

专栏介绍 结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 文章目录 专栏介绍用Python获取网络数据requests库编写爬虫代…

【论文阅读】利用道路目标特征的多期车载激光点云配准

目录 引 言1 道路场景点云特征2 配准方法2.1 配准基元获取2.2 特征点提取2.3 两期道路场景车载点云的配准 2.3.1 基于特征点的4PCS 粗配准 3 实验与分析4 结论5 参考文献 摘 要 针对车载移动测量系统获取的城市道路点云场景巨大、目标复杂多样&#xff0c;多期道路场景重访车载…

【并发专题】操作系统模型及三级缓存架构

目录 课程内容一、冯诺依曼计算机模型详解1.计算机五大核心组成部分2.CPU内部结构3.CPU缓存结构4.CPU读取存储器数据过程5.CPU为何要有高速缓存 学习总结 课程内容 一、冯诺依曼计算机模型详解 现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时&#xff0c;先从内存中…

二、SQL-6.DCL-2).权限控制

*是数据库和表的通配符&#xff0c;出现在数据库位置上表示所有数据库&#xff0c;出现在表名位置上&#xff0c;表示所有表 %是主机名的通配符&#xff0c;表示所有主机。 e.g.所有数据库&#xff08;*&#xff09;的所有表&#xff08;*&#xff09;的所有权限&#xff08;a…

jeecgboot新建moudle,但是访问404,需要在open moudle setting 里面设置

jeecgboot新建moudle&#xff0c;但是访问404&#xff0c;需要在open moudle setting 里面设置 首先需要确定以下3个pom.xml 最最外层的pom.xml 最最外层的pom.xml <modules><module>jeecg-boot-base-core</module><module>jeecg-module-demo</m…

IDEA将本地项目上传到码云

一、创建本地仓库并关联 用IDEA打开项目&#xff0c;在菜单栏点击vcs->create git repository创建本地仓库&#xff0c; 选择当前项目所在的文件夹当作仓库目录。 二、将项目提交本地仓库 项目名右键就会出现“GIT”这个选项->Add->Commit Directory, 先将项目add…

CVE——通用漏洞披露

Common Vulnerabilities & Exposures Common Vulnerabilities & Exposures官网 上面是通用漏洞披露官网&#xff0c;最近由于某个加密签名算法ssh-ed 25519版本过低导致被扫出有安全风险&#xff0c;找到CVE官网对应的漏洞说明。 2022年11月18日 发布的漏洞 CVE-2022…

真正帮你实现—MapReduce统计WordCount词频,并将统计结果按出现次数降序排列

项目整体介绍 对类似WordCount案例的词频统计&#xff0c;并将统计结果按出现次数降序排列。 网上有很多帖子&#xff0c;均用的相似方案&#xff0c;重写某某方法然后。。。运行起来可能会报这样那样的错误&#xff0c;这里实现了一种解决方案&#xff0c;分享出来供大家参考…

深度学习中简易FC和CNN搭建

TensorFlow是由谷歌开发的PyTorch是由Facebook人工智能研究院&#xff08;Facebook AI Research&#xff09;开发的 Torch和cuda版本的对应&#xff0c;手动安装较好 全连接FC(Batch*Num) 搭建建议网络&#xff1a; from torch import nnclass Mnist_NN(nn.Module):def __i…

力扣 968. 监控二叉树

题目来源&#xff1a;https://leetcode.cn/problems/binary-tree-cameras/description/ C题解&#xff08;来源代码随想录&#xff09;&#xff1a;节点可以分为3个状态&#xff1a;0无覆盖&#xff1b;1有摄像头&#xff1b;2有覆盖。 要想放的摄像头最少&#xff0c;应当叶子…

SOC FPGA之HPS模型设计(一)

目录 一、建立HPS硬件系统模型 1.1 GHRD 1.2 从0开始搭建HPS 1.2.1 FPGA Interfaces 1.2.1.1 General 1.2.1.2 AXI Bridge 1.2.1.3 FPGA-to-HPS SDRAM Interface 1.2.1.4 DMA Peripheral Request 1.2.1.5 Interrupts 1.2.1.6 EMAC ptp interface 1.2.2 Peripheral P…

seata组件使用期间,获取全局事务状态

GlobalStatus枚举类展示全局事务状态 官网链接&#xff1a;http://seata.io/zh-cn/docs/user/appendix/global-transaction-status.html 获得全局事务状态 // 开启全局事务地方获取全局事务xid String xid RootContext.getXID(); // 通过全局事务xid获得GlobalStatus枚举类 …

Unity游戏源码分享-2.5D塔防类游戏

Unity游戏源码分享-2.5D塔防类游戏 项目地址&#xff1a; https://download.csdn.net/download/Highning0007/88118947

电子元器件选型与实战应用—01 电阻选型

大家好, 我是记得诚。 这是《电子元器件选型与实战应用》专栏的第一篇文章,今天的主角是电阻,在每一个电子产品中,都少不了电阻的身影,其重要性不言而喻。 文章目录 1. 入门知识1.1 基础1.2 常用品牌1.3 电阻的种类2. 贴片电阻标识2.1 三位数标注法2.2 四位数标注法2.3 小…

操作系统_进程与线程(二)

目录 2. 处理机调度 2.1 调度的基本概念 2.2 调度的层次 2.3 三级调度的联系 2.4 调度的目标 2.5 调度的实现 2.5.1 调度程序&#xff08;调度器&#xff09; 2.5.2 调度的时机、切换与过程 2.5.3 进程调度方式 2.5.4 闲逛进程 2.5.5 两种线程的调度 2.6 典型的调度…