Flutter 自定义 五星评价

使用 Flutter 进行自定义控件

学习使用Flutter 自定义 五星评价 展示控件

// 星星评分展示
class starRating extends StatefulWidget {// 初始化一些参数final double rating; // 当前分数final double maxRating; // 满分final int count; // 评分个数final double size; // 评分大小final Color unselectedColor; // 没有选中颜色final Color selectedColor; // 选中颜色final Widget unselectedImage; // 未选中Imagefinal Widget selectedImages; // 选中ImagestarRating({required this.rating,this.maxRating = 10,this.count = 5,this.size = 30,this.unselectedColor = const Color(0xffbbbbbb),this.selectedColor = const Color(0xffff0000),Widget? unselectedImage,Widget? selectedImage,
}): unselectedImage = (unselectedImage ?? Icon(Icons.star_border, color: unselectedColor, size: size)) as Widget,selectedImages = (selectedImage  ?? Icon(Icons.star, color: selectedColor, size: size)) as Widget;State<StatefulWidget> createState() {return _starRatingState();}
}
class _starRatingState extends State<starRating> {Widget build(BuildContext context) {return  Center(child: Stack(children: [Row(mainAxisSize: MainAxisSize.min, children: buildUnselectedStar()),Row(mainAxisSize: MainAxisSize.min, children: buildSelectedStar())],),);}// 没有选中的星星List<Widget> buildUnselectedStar () {return List.generate(widget.count, (index) {return widget.unselectedImage;});}// 选中的星星List<Widget> buildSelectedStar () {// 1、 创建 startsList<Widget> stars = [];var selectedColor;final star = widget.selectedImages;// 2、 构建 满星 startdouble oneValue = widget.maxRating / widget.count;int entireCount = (widget.rating / oneValue).floor();for (int i = 0; i < entireCount; i++) {stars.add(star);}// 3、构建部分填充stardouble leftWidth = ((widget.rating / oneValue) - entireCount) * widget.size;final halfStar = ClipRect(clipper: StartClipper(leftWidth),child: star,);stars.add(halfStar);// 如果填写的星星超过个数时if (stars.length > widget.count) {return stars.sublist(0, widget.count);}return stars;}
}
// 自定义裁剪
class StartClipper  extends CustomClipper<Rect> {double width;StartClipper(this.width);getClip(Size size) {return Rect.fromLTRB(0, 0, width, size.height);}bool shouldReclip(StartClipper oldClipper) {return oldClipper.width != this.width;}
}

自定义flutter 五星评价展示控件,目前只是用于展示,并没有添加任何交互功能,后续进行交互完善。

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

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

相关文章

什么是DevOps监控以及如何在组织中实施?

如今的软件开发商经常面临两大挑战——快速交付和大规模创新。DevOps通过在软件开发生命周期(SDLC)中引入自动化来开发和交付高质量的软件&#xff0c;从而帮助解决这些挑战。 持续集成(CI)/持续部署&#xff08;CD)是DevOps实践中自动化的关键组件。它可以自动化代码构建、测试…

力扣 1005. K 次取反后最大化的数组和

题目来源&#xff1a;https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/description/ C题解1&#xff1a;最直接的想法就是负的变正的&#xff0c;如果负的元素数量小于k&#xff0c;就挑选绝对值大的负数变正&#xff1b;如果负的元素数量大于k&#xf…

阿里云声音复刻

阿里云声音复刻 个性化人声定制 阿里云个性化人声定制是智能语音交互产品自学习平台下的一部分 使用方式&#xff1a;https://help.aliyun.com/document_detail/456006.html 方式一&#xff1a;控制台界面定制使用方式 方式二&#xff1a;通过OpenAPI定制&#xff1a;在该页…

回归预测 | MATLAB实现基于KELM-Adaboost核极限学习机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于KELM-Adaboost核极限学习机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于KELM-Adaboost核极限学习机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于KELM-Adaboo…

IP基础知识总结

IP他负责的是把IP数据包在不同网络间传送&#xff0c;这是网络设计相关的&#xff0c;与操作系统没有关系。所以这部分知识&#xff0c;不是网络的重点。IP和路由交换技术联系紧密。但是要作为基本知识点记住。 一、基本概念 网络层作用&#xff1a;实现主机与主机之间通信。 …

linux之Ubuntu系列(三)远程管理指令☞SSH 高级应用 RSA非对称加密 以及免密登录,配置别名

对称加密 、非对称加密 1、对称加密中加密和解密使用的秘钥是同一个&#xff1b;非对称加密中采用两个密钥&#xff0c;一般使用公钥进行加密&#xff0c;私钥进行解密。 2、对称加密解密的速度比较快&#xff0c;非对称加密和解密花费的时间长、速度相对较慢。 3、对称加密的…

81. 正则表达式

一、概述二、匹配单个字符三、匹配一组字符四、使用元字符五、重复匹配六、位置匹配七、使用子表达式八、回溯引用九、前后查找十、嵌入条件参考资料 一、概述 正则表达式用于文本内容的查找和替换。 正则表达式内置于其它语言或者软件产品中&#xff0c;它本身不是一种语言或…

uniapp微信小程序使用axios(vue3+axios+ts版)

版本号 "vue": "^3.2.45", "axios": "^1.4.0", "axios-miniprogram-adapter": "^0.3.5", 安装axios及axios适配器&#xff0c;适配小程序 yarn add axios axios-miniprogram-adapter 使用axios 在utils创建utils/…

7个银行的软件测试项目实战,别再说简历项目不知道怎么写了

目录 前言 项目描述1&#xff1a;上海华瑞银行直连票据项目 项目描述2&#xff1a;平安金服风控中台系统 项目描述3&#xff1a;众安创展APP项目 项 目4&#xff1a; 招商银行VTM自助渠道服务系统 项 目5&#xff1a;招商银行票据支付 项 目6&#xff1a; 平安银行风控系…

Virus Total 曝数据泄露大事件:涉及多国情报部门

The Hacker News 网站披露&#xff0c;可疑文件和病毒在线检测平台 VirusTotal 曝出数据泄露事故&#xff0c;一名员工无意中将部分 VirusTotal 注册客户的姓名、电子邮件地址等敏感数据信息上传到了恶意软件扫描平台&#xff0c;此举导致约 5600 名用户数据泄露。 据悉&#x…

《AI大模型:现状与发展,从ChatGPT到xAI的探索》

《AI大模型&#xff1a;现状与发展&#xff0c;从ChatGPT到xAI的探索》 自从GPT-3.5和ChatGPT在2022年底横空出世以来&#xff0c;AI大模型的发展和应用在全球范围内呈现出快速发展的趋势。这种趋势源于AI技术在理解、模拟和预测方面的巨大潜力&#xff0c;也源于人类对于更高效…

【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(备份+恢复篇)

深入探索和分析MySQL数据库的数据备份和恢复实战开发指南 MySQL数据库备份全量备份全量备份应用场景 增量备份binlogbinlog主要作用binlog的作用主要有两个方面 开启binlog日志功能要开启MySQL的binlog日志步骤 mysqlbinlogmysqlbinlog的使用案例 全量备份与增量备份结合按天全…

安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用后台模块SessionCookieToken身份验证唯一性

文章目录 开发环境数据导入-mysql架构&库表列数据库操作-mysqli函数&增删改查数据接收输出-html混编&超全局变量第三方插件引用-js传参&函数对象调用身份验证-Cookie使用身份验证-Session使用唯一性判断-Token使用具体安全知识点&#xff1a;Cookie和Session都…

ansible 批量设置主机名

修改之前的主机名 # hostname -i ::1 127.0.0.1 编写hosts文件 在任意位置编写hosts文件 # cat hosts [test] ailog4x10.221.206.227 hostnamepaas-10-221-206-227 ansible_python_interpreter/usr/bin/python3 ansible_ssh_host10.221.206.227 ansible_ssh_port22 ansible…

复习java基础

复习一天有点忘了的知识&#xff1a; 结构化编程 结构化程式设计(英语:Structured programming)是1960年代开始发展起来的一种编程典范。它采用子程序、程式码区块、for循环以及while循环等结构来取代传统的goto。 指导思想 自顶向下、逐步求精、模块化 编程过程 流程图是…

Django配置数据库ORM基础字段选项增删改查F对象Q对象聚合查询原生数据库操作SQL注入

前置条件 MySQL已安装安装pip3 install mysqlclient. #是对C语言操作MySQL数据库的一个简单封装支持Python3安装不上mysqlclient的话&#xff0c;pip3 install pymysql #纯Python实现的一个驱动. 用pymysql的话需要伪装成mysqlclient&#xff08;因为Django源代码要求mysqlcli…

VUE学习六之绑定样式及条件属性

绑定样式及条件属性 绑定样式条件属性 绑定样式 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>绑定样式</title><style>.basic{width: 400px;height: 100px;border: 1px solid black;}.happy{border: 4px…

Appium 安卓环境的配置

目录 前言&#xff1a; 环境准备 写个脚本玩玩 前言&#xff1a; 在使用Appium进行安卓自动化测试之前&#xff0c;需要配置相应的安卓环境。 环境准备 为了避免走弯路&#xff0c;我们先要确保三点&#xff1a; Android SDK API > 17 (Additional features require …

【Python爬虫与数据分析】进阶语法

目录 一、异常捕获 二、迭代器 三、拆包、聚合、映射 四、filter() 函数 五、匿名函数 六、闭包 七、装饰器 一、异常捕获 异常捕获可增强程序的健壮性&#xff0c;即程序在遇到遇到异常的时候并不会做中断处理&#xff0c;而是会将异常抛出&#xff0c;由程序员来分析…

Kafka 入门到起飞 - 核心概念(术语解释)

在kafka之旅&#xff0c;我们会大量讨论Kafka中的术语&#xff0c;那么就让我们先来了解一下这些核心概念 消息(Message)&#xff1a; kafka的数据单元称为消息&#xff0c;相当于DB里的一行数据或一条记录 消息由字节数组组成 批次&#xff1a; 生产者组一批数据再向kafka推送…