flutter 按钮单选封装
数字是自己先写死的
List list =[
{
"title": "影视特效",
"type":,
},
{
"title": "室内设计",
"type":
},
{
"title": "游戏原画",
"type":
},
{
"title": "次时代",
"type":
},
{
"title": "UI设计",
"type":
},
{
"title": "后期合成",
"type":
},
];
使用了GridView
用来控制一行显示几列
@override
Widget build(BuildContext context) {
int groupValue=1;
return GridView.count(
padding: EdgeInsets.all(5.0),
//一行多少个
crossAxisCount: 3,
//滚动方向
scrollDirection: Axis.vertical,
// 左右间隔
crossAxisSpacing: 10.0,
// 上下间隔
mainAxisSpacing: 15.0,
//宽高比
childAspectRatio: 1 / 0.4,
shrinkWrap: true,
children: widget.formList.map((value) {
return listitem(context,value);
}).toList(),
);
}
widget.formList 是从调用页面传过来的
Widget listitem(context,value) {
var deviceSize = MediaQuery.of(context).size;
print(value['type']);
return groupValue==value['type'] ? RaisedButton(
color: Colors.black,
onPressed: (){
print('切换${value}');
updateGroupValue(value['type']);
},
child: Text(value['title'],style: TextStyle(color: Colors.white),),
):OutlineButton(
onPressed: (){
print('切换${value}');
updateGroupValue(value['type']);
},
child: Text(value['title']),
);
}
这里是代码的关键比较 当value和groupValue一致的时候则选中 设置选中样式和没选中样式
当点击某一个按钮的时候进行修改 groupValue 的值 默认groupValue值为0
int groupValue=0;
void updateGroupValue(int v){
setState(() {
groupValue=v;
});
}
最终效果如下:
flutter 按钮单选封装的更多相关文章
- iOS开发——项目实战OC篇&类QQ黏性按钮(封装)
类QQ粘性按钮(封装) 那个,先来说说原理吧: 这里原理就是,在界面设置两个控件一个按钮在上面,一个View在下面(同样大小),当我们拖动按钮的时候显示下面的View,view不移动,但是会根据按钮中 ...
- WPF控件库:文字按钮的封装
需求:封装按钮,按钮上面只显示文字.在鼠标移上去.鼠标点击按钮.以及将按钮设为不可用时按钮的背景色和前景色需要发生变化 实现:继承Button类,封装如下6个属性: #region 依赖属性 /// ...
- ios开发之--多个按钮单选效果
开发项目时,有很多场景需要用到按钮单选效果,例如充值页面,选择标签页面等,具体实现代码如下: 1,创建 -(UIView *)headerView { CGFloat width = (Kscreen ...
- iOS不得姐项目--appearance的妙用,再一次设置导航栏返回按钮,导航栏左右按钮的封装(巧用分类)
一.UI_APPEARANCE_SELECTOR 彩票项目中appearance的用法一直没有搞明白,这次通过第二个项目中老师的讲解,更深一层次的了解到了很多关于appearance的作用以及使用方法 ...
- WPF控件库:图片按钮的封装
需求:很多时候界面上的按钮都需要被贴上图片,一般来说: 1.按钮处于正常状态,按钮具有背景图A 2.鼠标移至按钮上方状态,按钮具有背景图B 3.鼠标点击按钮状态,按钮具有背景图C 4.按钮处于不可用状 ...
- swift项目第六天:中间发布按钮的封装以及监听点击事件
import UIKit /* 总结:1:给UIButton写分类,新建文件swiftFile,一般为了区分起名字都是名字-Extension,要想调用UI控件需要导入 import UIKit框架, ...
- flutter Radio单选框
单选框,允许用户从一组中选择一个选项. import 'package:flutter/material.dart'; class RadioDemo extends StatefulWidget { ...
- Flutter用dio封装http网络请求,设置统一的请求地址、headers及处理返回内容
封装http请求是项目中经常需要做的,常用于设置通用请求地址.请求headers以及处理返回结果,例如在项目中开发地址.测试地址.上线地址是不一样的,当在封装的请求设置好默认地址之后只需要改一个地址而 ...
- Flutter 打印日志封装及创建Live Templates快捷打印日志
只需要输入logi 就可出现以下代码 /// tag(类名.函数名)LogUtil.i(index, tag: '_MyHomePageState.onItemClick:');打印日志效果如下: 实 ...
随机推荐
- Restrictions----用法
----------------------------------------方法说明 --------------------------QBC常用限定方法-------------------- ...
- clickhouse高可用-节点宕机数据一致性方案-热扩容
1. 集群节点及服务分配 说明: 1.1. 在每个节点上启动两个clickhouse服务(后面会详细介绍如何操作这一步),一个数据分片,一个数据备份,为了确保宕机数据一致性,数据分片和数据备份不能同一 ...
- Robot Framework:日志输出中文Unicode编码
robotframework 输出日志时,中文显示为Unicode编码 . 修改方法: 在Python27\Lib\site-packages\robotframework-3.0.4-py2.7.e ...
- vs2012+wdk8.0 搭建wdf驱动开发环境
开发环境搭建: 系统:win7 x64 工具:vs2012 + WDK8.0 插件:wdfcoinstaller.msi (1)先安装vs2012,再安装wdk8.0,这样在打开vs2012时可以创建 ...
- Java-Class-I:org.springframework.web.mutipart.MutipartFile
ylbtech-Java-Class-I:org.springframework.web.mutipart.MutipartFile 1.返回顶部 2.返回顶部 1.1. import org.s ...
- POJ 1329 Circle Through Three Points(三角形外接圆)
题目链接:http://poj.org/problem?id=1329 #include<cstdio> #include<cmath> #include<algorit ...
- jQuery实用美化input 上传组建
下载插件 (5) 简要教程 jquery-filestyle是一款可以简单实用的表单文件上传域美化jQuery插件.该插件可以将表单的文件上传域转换为类似Bootstrap按钮组的样式 ...
- idea plugin 进度条
ProgressManager.getInstance().run(new Task.Backgroundable(project, "Switching Env") { @Ove ...
- 通过字体代替图片优化,如何使用Font Awesome字体图标?
博客搬迁,给你带来的不便敬请谅解! http://www.suanliutudousi.com/2017/10/17/%E9%80%9A%E8%BF%87%E5%AD%97%E4%BD%93%E4%B ...
- Java多线程sleep和wait的区别,总结得非常好。
我们都知道sleep是让线程休眠,到时间后会继续执行,wait是等待,需要唤醒再继续执行,那么这两种方法在多线程中的表现形态,它们各有什么区别呢? 可以总结为以下几点. 使用上 从使用角度看,slee ...