You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何实现Radio单选按钮与对应文本水平相邻排列?

示例效果图

问题原因

你当前把所有Radio组件和Text组件都直接作为外层Column的子元素,Column默认沿垂直方向排列所有子控件,所以会出现按钮和对应文本纵向排列的问题。

解决方案

方案1:用Row包裹每组「单选按钮+文本」

把每一组Radio和对应的Text放在同一个Row组件内,让组内元素沿水平方向排列,再将所有Row放到外层Column中即可,代码示例如下:

Column(
  mainAxisAlignment: MainAxisAlignment.center,
  children: <Widget>[
    // 第一组单选按钮+文本
    Row(
      crossAxisAlignment: CrossAxisAlignment.center,
      children: [
        Radio(
          value: 1,
          groupValue: id,
          onChanged: (val) {
            setState(() {
              predominant = 'recessiva_aa';
              id = 1;
            });
          },
        ),
        const Text(
          'Epistasia Recessiva (aa)',
          style: TextStyle(fontSize: 17.0),
        ),
      ],
    ),
    // 第二组单选按钮+文本
    Row(
      crossAxisAlignment: CrossAxisAlignment.center,
      children: [
        Radio(
          value: 2,
          groupValue: id,
          onChanged: (val) {
            setState(() {
              predominant = 'recessiva_bb';
              id = 2;
            });
          },
        ),
        const Text(
          'Epistasia Recessiva (bb)',
          style: TextStyle(fontSize: 17.0),
        ),
      ],
    ),
    // 剩余组以此类推
  ],
)

方案2:直接使用RadioListTile组件

Flutter官方已经封装了自带文本的单选框组件RadioListTile,无需自己嵌套Row,使用更简便,还支持整行点击触发选择:

Column(
  mainAxisAlignment: MainAxisAlignment.center,
  children: <Widget>[
    RadioListTile(
      value: 1,
      groupValue: id,
      title: const Text(
        'Epistasia Recessiva (aa)',
        style: TextStyle(fontSize: 17.0),
      ),
      onChanged: (val) {
        setState(() {
          predominant = 'recessiva_aa';
          id = 1;
        });
      },
    ),
    RadioListTile(
      value: 2,
      groupValue: id,
      title: const Text(
        'Epistasia Recessiva (bb)',
        style: TextStyle(fontSize: 17.0),
      ),
      onChanged: (val) {
        setState(() {
          predominant = 'recessiva_bb';
          id = 2;
        });
      },
    ),
    // 剩余选项以此类推
  ],
)

如果需要调整单选框和文本的间距、对齐方式,可以通过RadioListTile的contentPadding、controlAffinity等参数配置。

内容的提问来源于stack exchange,提问作者bilbo_bo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:57:03