You need to enable JavaScript to run this app. 如何将文本与RadioListTile的单选按钮起始位置对齐
优惠活动
大模型
产品
解决方案
定价
更多

如何将文本与RadioListTile的单选按钮起始位置对齐

对齐实现方案

方案1:修改RadioListTile默认内边距(改动最小)

RadioListTile 继承自 ListTile,默认自带 contentPadding: EdgeInsets.symmetric(horizontal: 16) 水平内边距,直接将该属性设置为0,单选按钮就会自动和外层标题文本左对齐,适配所有屏幕尺寸:

RadioListTile<int>(
  contentPadding: EdgeInsets.zero, // 新增这行代码
  title: Text(snapshot.data.answers[i]),
  value: i,
  groupValue: _selectedAnswer,
  onChanged: (int value) {
    setState(() {
      _selectedAnswer = value;
    });
  },
)

方案2:给标题增加匹配的左边距

如果需要保留RadioListTile的默认内边距,只需要给上方的标题文本增加和单选按钮左边距相等的padding即可:

Padding(
  padding: const EdgeInsets.only(left: 16),
  child: Text(
    snapshot.data.body,
    style: TextStyle(fontWeight: FontWeight.bold),
  ),
)

这里的16就是ListTile默认的水平左边距,和默认RadioListTile的单选按钮起始位置完全匹配。

方案3:自定义单选组件(可控性最高)

如果后续还有其他样式调整需求,可以直接组合组件实现单选效果,避免ListTile自带默认样式干扰,天然和标题左对齐:

for (var i = 0; i < snapshot.data.answers.length; ++i)
  GestureDetector(
    onTap: () => setState(() => _selectedAnswer = i),
    child: Row(
      children: [
        Radio<int>(
          value: i,
          groupValue: _selectedAnswer,
          onChanged: (val) {
            if(val != null) setState(() => _selectedAnswer = val);
          },
        ),
        Text(snapshot.data.answers[i]),
      ],
    ),
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 00:45:07