如何删除RadioListTile上的内部填充,以便可以连续使用3个RadioListTiles?

Jas*_*oms 6 dart flutter flutter-layout

我对Flutter和Dart很陌生,对于这个特定主题,我似乎找不到任何提示。我正在尝试将3 RadioListTiles放入Row这样:

Row(
        children: [
          Expanded(
            child:RadioListTile<GoalSelection>(
              title: Text(
                'Net',
                style: Theme.of(context).textTheme.body1,
              ),
              value: GoalSelection.net,
              groupValue: _goalSelection,
              onChanged: (GoalSelection value) {
                setState(() {
                  _goalSelection = value;
                });
              },
            ),
          ),
          Expanded(
            child: RadioListTile<GoalSelection>(
              title: Text(
                'Gross',
                style: Theme.of(context).textTheme.body1,
              ),
              value: GoalSelection.gross,
              groupValue: _goalSelection,
              onChanged: (GoalSelection value) {
                setState(() {
                  _goalSelection = value;
                });
              },
            ),
          ),
          Expanded(
            child: RadioListTile<GoalSelection>(
              title: Text(
                'Salary',
                style: Theme.of(context).textTheme.body1,
              ),
              value: GoalSelection.salary,
              groupValue: _goalSelection,
              onChanged: (GoalSelection value) {
                setState(() {
                  _goalSelection = value;
                });
              },
            ),
          ),
        ],
      ),
Run Code Online (Sandbox Code Playgroud)

按钮的布局不错,但标签似乎浪费了很多空间。我在下面放了一个屏幕截图,它是目前的样子。我曾尝试包裹ExpandedRadioListTile,并TextPadding小部件(全部一次一个)来填充手动设置为0,但它没有做任何事情。我也尝试更改Expanded为,Flexible即使我认为这不会改变任何东西。我现在很茫然。有什么办法可以使这种布局正常工作吗?我有点以为这是我正在做的愚蠢的事情。

布局检查器显示填充

Har*_*ngh 25

您可以使用Radio + 文本小部件代替RadioListTile。要删除 Radio 小部件集中的内部填充:

                  Radio(
                    visualDensity: const VisualDensity(
                        horizontal: VisualDensity.minimumDensity,
                        vertical: VisualDensity.minimumDensity),
                    materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
                    .....
                  ),
Run Code Online (Sandbox Code Playgroud)


Rém*_*let 10

RadioListTile 用于在垂直滚动列表中获取全宽。

如果您不想要这种行为,请不要使用它。使用Radio来代替。

  • 文档(以及各种 GitHub 问题)表明这是带有标签的 Radio 的实现。我知道您可以使用 Radio 和 Text 排成一行,但是有没有办法将 Text 点击与 Radio 点击联系起来? (7认同)

小智 10

您可以连续使用RadioText小部件。但Radio也有同样的填充问题。为了去除填充你可以把Radio作为一个孩子SizedBox

例如:- SizedBox(height: 20, width: 20, child: Radio(.......))


Rez*_*ari 8

刚刚设置contentPadding: EdgeInsets.zero

RadioListTile(contentPadding: EdgeInsets.zero)
Run Code Online (Sandbox Code Playgroud)