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)
上一篇 2022年5月27日 下午5:00
下一篇 2022年5月27日 下午5:00


相关推荐

  • sklearn库的安装教程

    sklearn库的安装教程sklearn 库的简介 sklearn 库 sklearn 是 scikit learn 的简称 是一个基于 Python 的第三方模块 sklearn 库集成了一些常用的机器学习方法 在进行机器学习任务时 并不需要实现算法 只需要简单的调用 sklearn 库中提供的模块就能完成大多数的机器学习任务 sklearn 库是在 Numpy Scipy 和 matplotlib 的基础上开发而成的 因此在介绍 sklea

    2026年3月19日
    2
  • PyCharm基本设置 – 【图文】

    PyCharm基本设置 – 【图文】PyCharm 基本设置主要从三个方面讲解 第一个是 PyCharm 界面的外观设置 第二个是关于 Python 解释器的设置 第三个是项目管理功能的项目设置 设置的总查找路径 File Settings DefaultSetti 具体步骤 在 PyCharm 界面的头部的导航栏上找到 File 点击 File 点击 Settings 一 PyCharm 界面的外观设置 1 1 修改主题具体步骤 Appearance amp Behavior

    2026年3月27日
    3
  • android的timertask,Android 中 Timer 和 TimerTask的使用「建议收藏」

    Android中Timer是一个普通的类,其中有几个重要的方法;而TimerTask则是一个抽象类,其中含有一个抽象方法run()。使用Timer类中的schedule()方法可以完成对TimerTask的调度,该方法具有三个参数,其函数声明如下:publicvoidschedule(TimerTasktask,longdelay,longperiod)其中第一个参数为TimerTa…

    2022年4月18日
    43
  • MySQL数据库:explain执行计划详解

    MySQL数据库:explain执行计划详解

    2021年4月9日
    140
  • CAP理论应用

    CAP理论应用神一样的CAP理论被应用在何方对于开发或设计分布式系统的架构师工程师来说,CAP是必须要掌握的理论。(but:这个文章的重点并不是讨论CAP理论和细节,重点是说说CAP在微服务中的开发怎么起到一个指引作用,会通过几个微服务开发的例子说说明,尽量的去贴近开发)CAP定理又被成为布鲁尔定理,是加州大学计算机科学家埃里克·布鲁尔提出来的猜想,后来被证明成为分布式计算领域公认的定理。不过布…

    2022年6月26日
    30
  • char转int方法

    char转int方法这是我的第一篇博客 也是我学习的一种方法 我会将学习中总结出的方法问题通过博客记录下来 希望能帮到同样在努力学习的朋友 也希望有什么不足得到大家的补充帮助回归正文 在编程中我们常常会涉及到类型转换的问题 类型转换最重视的装箱与拆箱带来的性能损耗 char 类型与 int 类型同属于值类型 因此在 char 转换成 int 的时候就想不造成装箱拆箱的性能损耗的同时完成转换就可以这样做 首先大家要明

    2026年3月18日
    1

发表回复

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

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