dart - 如何在颤动中将圆形添加到下拉按钮?
解决方案
不可能以简单的方式做到这一点。您必须编辑类_DropdownMenuPainter
和_DropdownMenuState
from dropdrown.dart
,这是 Flutter 的材料包的一部分。
在_DropdownMenuPainter
中,更改BoxDecoration
构造函数中设置的半径:
_DropdownMenuPainter({
...
this.resize,
}) : _painter = BoxDecoration(
...
borderRadius: BorderRadius.circular(16.0), // Set the radius you want here
boxShadow: kElevationToShadow[elevation],
).createBoxPainter(),
super(repaint: resize);
在_DropdownMenuState
方法内部build()
,用 a 包装Material
小部件ClipRRect
并将其borderRadius
设置为与您设置的相同_DropdownMenuPainter
:
return FadeTransition(
opacity: _fadeOpacity,
child: CustomPaint(
...
child: Semantics(
...
child: ClipRRect(
borderRadius: BorderRadius.circular(16.0), // This must be identical to the one set before
child: Material(
...
),
),
),
),
);
请注意,当您更新 Flutter 时,您将丢失这些更改。
更新:
我打算对 Flutter 进行 PR,但花了 1 小时尝试运行测试但没有成功,所以我不会在这上面浪费时间。相反,我提出了一个要点,因此您可以使用我对本地 Flutter 副本所做的更改来复制整个文件。
https://gist.github.com/hugocbpassos/2a63594a21d7f231e97dd7dc1f18ee68
要使用它,只需设置radius
属性:
DropdownButton(
radius: 16,
items: [
...
],
);
推荐阅读
- javascript - Javascript程序产生未定义(递归)
- postgresql - 命令中的 Postgres 语法错误与文档一致
- rethinkdb - 当我向 RethinkDB 查询添加索引时,为什么会得到结果?
- php - WordPress 站点中的警告消息。“参数 1 不是数组”网站名称“RealLifeCBD.com”
- c# - 如何动态检查 if 语句
- laravel - 错误 App\Http\Requests\AddUserRequest::fails 不存在
- javascript - Typescript 不会在运行时进行类型检查
- python - 使用 popen 显示 WindowsError: [错误 2] 系统找不到指定的文件
- javascript - 如何在 PHP 中循环 Json 数组
- java - 如何通过使用 apigee I java 创建的 API 获取访问令牌