第八十八回:创建一个调色板

文章目录

  • 概念介绍
  • 实现方法
    • 整体思路
    • 具体步骤
  • 示例代码

我们在上一章回中介绍了打印日志相关的内容,本章回中将介绍 如何创建一个调色板.闲话休提,让我们一起Talk Flutter吧。

概念介绍

我们在本章回中介绍的调色板是一个具有各种颜色的窗口,点击不同的颜色就会输出不同的数值。这么介绍比较抽象,下面是程序的运行效果图。
在这里插入图片描述

实现方法

整体思路

使用GridView创建网格状的布局,布局中的每个小组件充当调色板中的某一个颜色板,颜色板的数量由List控制,颜色使用随机数生成;各个颜色板之间保持一定的间隔,这样便于识别。颜色板可以被选择或者点击,点击后可以获得响应。

具体步骤

调色板主要是通过GridView实现的,重点是它的gridDelegate属性,通过该属性可以控制调色板整体的形状与布局。下面是具体的实现方法:

  1. 创建GridView组件,并且给它的gridDelegate属性和children属性赋值;
  2. 在gridDelegate属性中设置主轴中子组件的数量,宽高比,以及组件之间的边距;
  3. 在children属性中通过List设置子组件,子组件是TextButton,上面显示List的索引值;
  4. 在TextButton的onPressed属性中通过日志打印出数值,这个数值是当前元素在列表中的索引值;
  5. 在TextButton外面包一个Container组件,用来控制背景颜色,颜色使用随机数生成,这样会产生不同的颜色;
  6. 在GridView组件外面包一个Padding组件,主要用来控制画板左右的两边的边距,边距值与子组件之间的边距值相等;

示例代码

///使用GirdView的构造方法创建GirdView,主要是gridDelegate属性是必选属性
class ColorPaletteByGridView extends StatelessWidget {const ColorPaletteByGridView({super.key,});Widget build(BuildContext context) {return Padding(///list中无法添加最左和最右侧的边距,通过padding添加// padding: const EdgeInsets.all(8.0),padding: const EdgeInsets.only(left: 8.0,right: 8.0),child: GridView(gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(///主轴中组件的数量crossAxisCount: 3,///宽高比childAspectRatio: 1.8,///主轴和交叉轴的边距mainAxisSpacing: 8,crossAxisSpacing: 8,),children: List.generate(45, (index) {return Container(child: Center(///使用按钮来响应事件child: TextButton(onPressed: ()=>print('$index clicked'),///文本使用索引值child: Text('$index',style: TextStyle(color: Colors.white),),),),///颜色使用随机数生成color: Color.fromARGB(255, Random().nextInt(256), Random().nextInt(256), Random().nextInt(256)),);}),),);}
}

上面的代码把整个实现过程封装成了一个Widget,这样方便项目管理,把该Widget赋值给Scaffold的body属性后就可以运行。我们在代码中添加了详细的注释,方便大家理解代码,不过还有一些细节需要补充:

  • gridDelegate属性控制了整个GridView的整体布局风格,具体的需求由项目决定;
  • GridView的子组件可以依据项目需求决定,简单起见,示例代码中使用了TextButton;
  • 子组件之间的边距值和GridView左右两侧的边距值依据项目需求决定,不过最好让它们保持相等;

看官们,关于"如何创建调色板"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

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

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

相关文章

EDM营销过时了?不,这才是跨境电商成功的最佳工具

根据最近的一项研究,电子邮件仍然是最具说服力的营销工具和沟通形式之一。虽然即时通讯等其他渠道正在扎根,但电子邮件仍然是影响最深远的商业交流形式。到2023年,每天发送和接收的电子邮件总数可能会超过333亿封。所以,如果您希望…

iOS 中支持点击网页scheme超链接打开其他app

网页内容如图所示 思路,点击网页中一个href 超链接的时候,会执行 decidePolicyForNavigationAction 方法,我们在改方法中截获URL, 判断如果是URL scheme类型的,则执行 [[UIApplication sharedApplication]openURL:URL…

XUbuntu22.04之vim无法复制内容到系统(一百八十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

牛客小白月赛75题解

C 豆子 构造题 由构造公式知 第n级好豆子 第n-1级坏豆子^1 所以只需要构造一个豆子结构就行 第 i 级豆子 第 i 级豆子 第 i 级豆子 第 i 级豆子 第 i 级豆子 ^ 1 第i级豆子\begin{aligned} 第i级豆子 && 第i级豆子 \\ 第i级豆子 && 第i级豆子 \verb|^| 1 …

Nginx Linux设置开机自启动

使用如下命令 vi /lib/systemd/system/nginx.service 创建并编辑文件将以下代码黏贴至此文件中 [Unit] Descriptionnginx Afternetwork.target[Service] Typeforking TimeoutSec0 #防止启动超时 Userroot Grouproot criptionnacos Afternetwork.target[Service] Typeforking T…

操作系统—软链接和硬链接的介绍、实现、区别

一、前言 有时候我们希望给某个文件取个别名,那么在 Linux 中可以通过硬链接 和软链接的方式来实现,它们都是比较特殊的文件,但是实现方式也是不相同的。 首先简单介绍一下,Linux文件系统的索引节点(inode) 索引节点…

习题-Java网络编程

目录 1.TCP-对象 2.UDP​​​​​​​​​​​​​​ 1.TCP-对象 利用TCP传输对象信息,需要对对象进行实例化 User类: package dh09.demo02;import java.io.Serializable;public class User implements Serializable {private String name;private St…

使用Postman+JMeter进行简单的接口测试

以前每次学习接口测试都是百度,查看相关人员的实战经验,没有结合自己公司项目接口真正具体情况。 这里简单分享一下公司项目Web平台的一个查询接口,我会使用2种工具Postman和JMeter如何对同一个接口做调试。 准备工作 首先,登录公…

对话思必驰:语音+AIGC的时代才刚刚开始

思必驰的价值在于开创了以语音技术为基础,打开了用人机交互解决方案构建软硬件智能化的崭新篇章。具象地说,它不仅是ChatBot,更像是“Jarvis”。 数科星球原创 作者丨苑晶 编辑丨大兔 2023年已过半,人工智能已成为全社会所关注…

不可用的ES节点重启后重新加入集群

如果一个之前不可用的ES节点重启后重新加入集群,而该节点上还有旧的数据,ES会做以下几件事: ES会发现node2上有旧的数据分片会将node2上的分片标记为不可分配(unassigned)会将node2上的分片数据与其他 Master eligible 节点上的 primary/replica 数据对比如果数据不一致,ES会:…

【精致生活】打造舒适家居环境的绝佳选择-API商品详细介绍

【精致生活】打造舒适家居环境的绝佳选择-API商品详细介绍 在追求舒适家居环境的道路上,我们时常需要借助一些高质量的产品来实现。而今天,我们要介绍的这款API商品,则是您打造精致生活的不二选择。 淘宝/天猫获得淘宝商品详情 API 返回值…

使用OpenCV DNN推理YOLOv5-CLS转换后的ONNX分类模型

YOLOv5是一种先进的目标检测算法,而YOLOv5-CLS则是YOLOv5的一个变种,专门用于图像分类任务。为了在实际应用中使用YOLOv5-CLS模型,我们需要将其转换为Open Neural Network Exchange (ONNX) 格式,并使用OpenCV DNN库来进行推理。 …

基于FME二开产品:NewGIS integration介绍

目录 前言 一、模板上传 二、模板在线运行 1.模板参数解析 2.模板运行 三、成果管理 总结 前言 爆肝两个月,我和我的团队终于打造出了一款能完美适配所有FME模板的在线模板管理平台,目前支持FME2021版本的所有模板的在线运行、管理。整体技术框架…

uni-app:常见组件view、text、icon

根据html:可知div是块级标签,span是行级标签 这里view类似于div,text类似于span,即 块级标签:view 行级标签:text、icon 类似效果 两个icon图标,置于第一排 两个view,分别位于第…

matlab程序调试方法步骤

1内容 1)代码内调试; 2)断点调试方法; 3)指令调试方法; 二、断点调试方法 调试代码最经典的就是利用设置断点的方法,此处给出对应快捷键: F12:设置/取消 断点 F10&…

项目名称:无源在线词典项目

一,概述 基于C语言的网络电子词典项目,使用到了tcp协议的并发服务器设计、网络编程、文件I/O、数据库等多方面的知识。可以满足多用户同时登陆,用户登陆后可以查询单词及历史记录,具有查找快速,保密性好等优点。 开…

JAVA集成国密SM4

JAVA集成国密SM4加解密 一、pom配置二、代码集成2.1、目录结构2.2、源码2.3、测试 三、遇到的坑3.1、秘钥长度3.2、转码问题 四、相关链接 国密算法概述:https://blog.csdn.net/qq_38254635/article/details/131801527 SM4对称算法 SM4 无线局域网标准的分组数据算…

wordpress 分类名称与链接

1.分类名称与链接 <?php the_category(); ?> 2.分类页面调用当前分类名称 要在分类页得到分类页面的栏目名称,需要用 <?php single_cat_title(); ?> 3.文章页调用当前文章所属分类名称 代码1 <?phpforeach((get_the_category()) as $category){echo $c…

添加资源到android源码中-修改framework层

编译带有资源的jar包&#xff0c;需要更改frameworks层&#xff0c;方法如下&#xff1a; 一.增加png类型的图片资源 1.将appupdate模块所有用到的png格式图片拷贝到framework/base/core/res/res/drawable-mdpi里。但是要确保没有与原生的没有重名文件。 2.在framework/base…

c++内存映射文件

概念 将一个文件直接映射到进程的进程空间中&#xff08;“映射”就是建立一种对应关系,这里指硬盘上文件的位置与进程逻辑地址空间中一块相同区域之间一 一对应,这种关系纯属是逻辑上的概念&#xff0c;物理上是不存在的&#xff09;&#xff0c;这样可以通过内存指针用读写内…