flutter Radio 单选框

flutter Radio 单选框Flutter单选框

大家好,又见面了,我是你们的朋友全栈君。

Radio 单选框

目前在西瓜视频上免费刊登 Flutter 系列教程,每日更新,欢迎关注接收提醒

【x1】点击查看提示

【x2】各种系列的教程

【x3】Flutter文章积累目录


1 flutter单选框Radio的基本使用

  ///单选框的基本使用
  ///默认选中的单选框的值
  int groupValue = 0;
  Radio buildRadioUseWidget() { 
   
    return Radio(
      ///此单选框绑定的值 必选参数
      value: 0,
      ///当前组中这选定的值 必选参数
      groupValue: groupValue,
      ///点击状态改变时的回调 必选参数
      onChanged: (v) { 
   
        setState(() { 
   
          this.groupValue = v;
        });
      },
    );
  }

运行效果如下图所示
在这里插入图片描述
在实际项目开发中,一般单选框都会成组使用,不会单独使用,如下图所示效果:
在这里插入图片描述
代码如下:

  ///默认选中的单选框的值
  int groupValue = 0;
  ///单选框的成组使用
  Row buildRadioGroupWidget() { 
   
    return Row(children: [
      Radio(
        ///此单选框绑定的值 必选参数
        value: 0,
        ///当前组中这选定的值 必选参数
        groupValue: groupValue,
        ///点击状态改变时的回调 必选参数
        onChanged: (v) { 
   
          setState(() { 
   
            this.groupValue = v;
          });
        },
      ),
      Radio(
        ///此单选框绑定的值 必选参数
        value: 1,
        ///当前组中这选定的值 必选参数
        groupValue: groupValue,
        ///点击状态改变时的回调 必选参数
        onChanged: (v) { 
   
          setState(() { 
   
            this.groupValue = v;
          });
        },
      ),
      Radio(
        ///此单选框绑定的值 必选参数
        value: 2,
        ///当前组中这选定的值 必选参数
        groupValue: groupValue,
        ///点击状态改变时的回调 必选参数
        onChanged: (v) { 
   
          setState(() { 
   
            this.groupValue = v;
          });
        },
      )
    ],);
  }

如下图所示效果,是在实际项目中也比较常用的一种设计效果,单选框与文字结合使用,在水平方向通过结合Row来实现
在这里插入图片描述

///默认选中的单选框的值
int groupValue = 0;
///单选框的成组使用
Row buildRadioGroupRowWidget() { 
   
  return Row(
    children: [
      Row(
        ///包裹子布局
        mainAxisSize: MainAxisSize.min,
        children: [
          Radio(
            ///此单选框绑定的值 必选参数
            value: 0,
            ///当前组中这选定的值 必选参数
            groupValue: groupValue,
            ///点击状态改变时的回调 必选参数
            onChanged: (v) { 
   
              setState(() { 
   
                this.groupValue = v;
              });
            },
          ),
          Text("语文")
        ],
      ),
      Row(
        ///包裹子布局
        mainAxisSize: MainAxisSize.min,
        children: [
          Radio(
            ///此单选框绑定的值 必选参数
            value: 1,
            ///当前组中这选定的值 必选参数
            groupValue: groupValue,
            ///点击状态改变时的回调 必选参数
            onChanged: (v) { 
   
              setState(() { 
   
                this.groupValue = v;
              });
            },
          ),
          Text("数学")
        ],
      ),
      Row(
        ///包裹子布局
        mainAxisSize: MainAxisSize.min,
        children: [
          Radio(
            ///此单选框绑定的值 必选参数
            value: 2,
            ///当前组中这选定的值 必选参数
            groupValue: groupValue,
            ///点击状态改变时的回调 必选参数
            onChanged: (v) { 
   
              setState(() { 
   
                this.groupValue = v;
              });
            },
          ),
          Text("英语")
        ],
      ),
    ],
  );
}

在这里需要注意的是水平线性布局Row默认的填充父布局的,用在这里的话,需要将其设置为包裹子布局的方式,通过配置mainAxisSize的值为MainAxisSize.min来实现。
在上图的效果基础上进行一些改造,将单选框Radio与文字的排列方式使用线性布局Column来组件,实现的效果如下图所示,对应的关键代码如下:
在这里插入图片描述
代码如下:

///单选框的成组使用
///默认选中的单选框的值
int groupValue = 0;
  Row buildRadioGroupColumnWidget() { 
   
    return Row(
      children: [
        Column(
          ///包裹子布局
          mainAxisSize: MainAxisSize.min,
          children: [
            Radio(
              ///此单选框绑定的值 必选参数
              value: 0,
              ///当前组中这选定的值 必选参数
              groupValue: groupValue,
              ///点击状态改变时的回调 必选参数
              onChanged: (v) { 
   
                setState(() { 
   
                  this.groupValue = v;
                });
              },
            ),
            Text("语文")
          ],
        ),
        Column(
          ///包裹子布局
          mainAxisSize: MainAxisSize.min,
          children: [... ... 省略 ],
        ),
        Column(
          ///包裹子布局
          mainAxisSize: MainAxisSize.min,
          children: [... ... 省略 ],
        ),
      ],
    );
  }


目前在西瓜视频上免费刊登 Flutter 系列教程,每日更新,欢迎关注接收提醒

【x1】点击查看提示

【x2】各种系列的教程

【x3】Flutter文章积累目录


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140609.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎样卸载干净eclipse_eclipse卸载又重新安装之曲折心路

    以前下过EclipseIDEforJavaDevelopers(其实当时自己下的时候也没有什么详细查应该下哪个,随便下的一个版本),课程老师要求下载红框框起来的这个EclipseIDEforEnterpriseJavaDevelopers(压缩包名字:eclipse-jee-2019-09-R-win32-x86_64)。其实问题不大,卸了重下呗。但是(敲黑板),踩了几个坑,差点摔…

    2022年4月6日
    74
  • 菜鸟级入门学习maven的使用,很实用的入门教程

    菜鸟级入门学习maven的使用,很实用的入门教程一、前言       早就知道maven在java项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档。发现这些文档的作者都是java的大腕,大多都是站在掌握了一定maven基础的角度上进行介绍,让我这初学者看的云里雾里不知所云。于是又去查看maven的官方网站,总算是有所了解,但一旦动手实际操作却又雾里看花。唉,没办法,就只有一遍一遍的动手尝试,经过种种磨难总算是

    2025年8月31日
    5
  • C++大数运算_size_t几个字节

    C++大数运算_size_t几个字节#include<cstring>#include<string>#include<iostream>usingnamespacestd;constexprautoMAXN=9999;constexprautoMAXSIZE=1000;constexprautoDLEN=4;classBigN{priv…

    2022年9月28日
    2
  • linux 文档编辑命令_vim编辑器常用命令

    linux 文档编辑命令_vim编辑器常用命令Linux文档编辑命令1.vi或vim命令1.基本操作1.vim文件名:进入一般模式(不能输入)2.按下i从一般模式,进入到插入模式3.按下esc从插入模式,退出到一般模式4.在一般模式下,输入:wq,退出编辑。2.vi基本概念3.常用命令2.管道linux提供管道符号“|”作用是“命令1”的输出内容,将作为“命令2”…

    2022年9月27日
    2
  • Matlab 直方图_matlab分析

    Matlab 直方图_matlab分析绘制直方图(水平和垂直的)语法bar(Y)bar(x,Y)bar(…,width)bar(…,’style’)bar(…,’bar_color’)bar(axes_handle,…)h=bar(…)hpatches=bar(‘v6’,…)barh(…)h=barh(…)hpatches=barh(‘v6

    2022年10月18日
    2
  • portraiture mac智能磨皮滤镜

    portraiture mac智能磨皮滤镜portraiture3Mac版是一款MacOS平台基于原始肖像插件的核心技术和功能集的PS智能磨皮滤镜软件,portraituremac将您的皮肤修饰工作流程提升到更高的性能水平,结果质量和整体易用性。我们敢说,我们的portraiture滤镜插件将继续改变行业,实现几乎所有技能水平,在图像主题和生产挑战的范围内实现卓越的皮肤修饰,包括肖像,全身,团体拍摄,广告,时尚,美容,医疗和运动图像,没有与其他软件产品,插件或数字修饰技术相关的熟悉约束或学习曲线。portraituremac可以出色的完成磨

    2022年7月22日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号