如何在颤动中调整芯片大小

Feb*_*K R 4 dart flutter

我想在视图中显示大量筹码,并在其中显示文本。由于数量很多,我想将芯片的尺寸减小到最小。特别是芯片的高度。如何才能做到这一点?

for (EPDiaryTarget target in widget.item.targetList) {
    Chip chip = new Chip(
      label: new Text(
        target.name,
        overflow: TextOverflow.ellipsis,
        style: new TextStyle(color: Colors.white),
      ),
      backgroundColor: const Color(0xFFa3bdc4),
    );
    studentsChips.add(chip);
  }
Run Code Online (Sandbox Code Playgroud)

我已经提供padding: new EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 0.0),了该芯片,但是其默认大小并未减小。是否可以将具有所需尺寸的自定义形状赋予芯片?如果是这样,怎么办?在此先感谢大家。

Arn*_*bac 22

现在您可以使用 VisualDensity ( https://api.flutter.dev/flutter/material/VisualDensity-class.html ),它是一个介于 -4 和 4 之间的双精度值 ([VisualDensity.minimumDensity], [VisualDensity.maximumDensity] )

  • ```visualDensity:VisualDensity(水平:0.0,垂直:-4)```谢谢,为我解决了一个芯片错误。 (14认同)

che*_*ins 10

您可以将芯片包装在Transform小部件中并按以下方式缩放比例:

    Transform(
      transform: new Matrix4.identity()..scale(0.8),
      child: new Chip(
        label: new Text(
          "Chip",
          overflow: TextOverflow.ellipsis,
          style: new TextStyle(color: Colors.white),
        ),
        backgroundColor: const Color(0xFFa3bdc4),
      ),
    ),
Run Code Online (Sandbox Code Playgroud)

  • 我不会说这是这种情况下的最佳解决方案,因为它还会缩放芯片内的文本,这很可能是不需要的。 (8认同)
  • 并且它保持总大小,因此如果它们彼此相邻,它们之间就会有巨大的间隙 (2认同)

Ale*_*kiy 10

包装标签:Text('chip') in Container 或 SizedBox。

Chip(
    label: Container(
        width: 100,
        height: 40,
        child: Text('chip'),
    ),
)
Run Code Online (Sandbox Code Playgroud)


小智 6

设置labelPadding: EdgeInsets.fromLTRB(0, -6, 0, -6)


小智 5

您需要设置materialTapTargetSize. 默认值为MaterialTapTargetSize.padded,将芯片的 minHeight 设置为 48px。将其设置MaterialTapTargetSize.shrinkWrap为删除多余的空间。

Chip( ..., materialTapTargetSize: MaterialTapTargetSize.shrinkWrap )

  • 这是正确的答案。此外,它也适用于“RawChip” (3认同)