Dart 如何在颤振中向下拉按钮添加圆形?

Dart 如何在颤振中向下拉按钮添加圆形?,dart,flutter,Dart,Flutter,我想知道如何通过添加圆形边框来定制DropdownButton,如下图所示 用一种简单的方法是不可能做到的。您必须从属于颤振材料包的dropcrowd.dart编辑类\u DropdownMenuPainter和\u DropdownMenuState 在\u下拉菜单中,更改构造函数中设置的框装饰半径: \u下拉菜单绘制程序({ ... 这个,调整大小, }):_painter=BoxDecoration( ... borderRadius:borderRadius.circular(16.0)

我想知道如何通过添加圆形边框来定制DropdownButton,如下图所示


用一种简单的方法是不可能做到的。您必须从属于颤振材料包的
dropcrowd.dart
编辑类
\u DropdownMenuPainter
\u DropdownMenuState

\u下拉菜单中,更改构造函数中设置的
框装饰
半径:

\u下拉菜单绘制程序({
...
这个,调整大小,
}):_painter=BoxDecoration(
...
borderRadius:borderRadius.circular(16.0),//在此处设置所需的半径
boxShadow:kElevationToShadow[标高],
).createBoxPainter(),
超级(重绘:调整大小);
\u DropdownMenuState
中,在方法
build()
内,使用
ClipRRect
包装
材质
小部件,并将其
边界半径设置为与为
\u DropdownMenuPainter
设置的相同:

返回衰减转换(
不透明度:_fadeOpacity,
孩子:定制油漆(
...
孩子:语义学(
...
孩子:ClipRRect(
borderRadius:borderRadius.circular(16.0),//这必须与之前的设置相同
儿童:材料(
...
),
),
),
),
);
请注意,在更新颤振时,您将丢失这些更改

更新: 我本来打算做一个关于颤振的公关,但是花了1个小时试图运行测试,但没有成功,所以我不打算在这上面浪费时间。相反,我做了一个要点,这样你就可以用我对你的本地颤振副本所做的更改来复制整个文件

要使用它,只需设置
radius
属性:

下拉按钮(
半径:16,
项目:[
...
],
);

我刚刚更改了这个:borderRadius:borderRadius.circular(16.0),在_DropDownMenuPaint的框装饰中,它工作得很好,非常感谢。这就是为什么您还必须创建
ClipRRect
的原因。如果增加半径(例如24)并单击第一个或最后一个菜单项,您将看到涟漪将在下拉菜单外绘制。使用
ClipRRect
可以防止这种情况,因此我建议您使用它,因为即使在某些不同的屏幕大小中使用16个半径,也可能会发生这种错误行为。@HugoPassos必须说这是一个非常棒的实现,谢谢。