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