flutter - Flutter:一个自定义的widget,充当FAB,Inkwell不尊重圆形,波纹是矩形
问题描述
为了在按钮上添加发光效果,我有“Frankenstein-ed”这个代码:
floatingActionButton: Container(
decoration: BoxDecoration(boxShadow: [
new BoxShadow(
color: Colors.pinkAccent,
blurRadius: 50.0,
),
]),
child: Material(
shape: CircleBorder(),
color: Colors.pink,
child: InkWell(
onTap: (){print('tap');},
child: Padding(
padding: const EdgeInsets.all(20.0), child: Icon(Icons.add)),
),
), //Icon(Icons.add),
),
中的形状Material
是圆形的,但 Inkwell 处理的涟漪效果超出了圆形。
我试过Inkwell
用 a包装Container
:
Container(
decoration: BoxDecoration(shape: BoxShape.circle),
child: InkWell(
onTap: (){print('tap');},
child: Padding(
padding: const EdgeInsets.all(20.0), child: Icon(Icons.add)),
),
),
Padding
并由 a包装Container
:
floatingActionButton: Container(
decoration: BoxDecoration(boxShadow: [
new BoxShadow(
color: Colors.pinkAccent,
blurRadius: 50.0,
),
]),
child: Material(
shape: CircleBorder(),
color: Colors.pink,
child: InkWell(
onTap: (){print('tap');},
child: Container(
decoration: BoxDecoration(shape: BoxShape.circle),
child: Padding(
padding: const EdgeInsets.all(20.0), child: Icon(Icons.add)),
),
),
), //Icon(Icons.add),
),
但没有运气。
在加斯帕德默滕的回答后编辑:
尝试此代码不会改变涟漪效应的行为:
Material(
shape: CircleBorder(),
color: Colors.pink,
child: Container(
decoration: BoxDecoration(boxShadow: [
new BoxShadow(
color: Colors.pinkAccent,
blurRadius: 50.0,
),
]),
child: InkWell(
onTap: () {
onClick();
},
child: Container(
decoration: BoxDecoration(shape: BoxShape.circle),
child: Padding(
padding: const EdgeInsets.all(20.0), child: Icon(icon)),
),
), //Icon(Icons.add),
),
);
解决方案
发生这种情况是因为材质小部件是墨水瓶的直接祖先。尝试将 Material 小部件放在容器之前,并指定 de coloris 和材质的边框半径,并从容器中删除颜色参数。
推荐阅读
- python - 从父类继承变量
- java - 码头登录服务中的已知用户
- android - 减少数据源
- node.js - 错误 TS2339:类型“{}”上不存在属性“包含”
- javascript - 带有闰年检查的 m/d/yyyy 和 mm/dd/yyyy 正则表达式
- python - 使用 os.system 将矩阵从一个文件导入到另一个文件
- python - FTP 上传——ASCII 模式——需要一个类似字节的对象,而不是 'str'
- ruby - 如何让我的游戏正常运行(战斗系统)?
- performance - Power BI M Query 中的查询执行选项
- swift - 快速将工具栏按钮移到工具栏的左侧