Flutter 容器内的墨水/图标按钮颜色
我有一个IconButton在一个容器内的墨水中(给它一个边框)。但是,边框不可见,因为它被容器颜色覆盖 在容器内以彩色背景显示图标按钮的最佳方式是什么 工作示例:Flutter 容器内的墨水/图标按钮颜色,flutter,Flutter,我有一个IconButton在一个容器内的墨水中(给它一个边框)。但是,边框不可见,因为它被容器颜色覆盖 在容器内以彩色背景显示图标按钮的最佳方式是什么 工作示例: import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) {
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.pink,
child: Center(
child: Ink(
decoration: const ShapeDecoration(
color: Colors.black,
shape: CircleBorder(),
),
child: IconButton(
icon: Icon(Icons.android),
color: Colors.white,
onPressed: () {},
),
),
),
);
}
}
使用
材料
代替容器
容器
不起作用的原因是墨水被绘制在底层的材料
小部件上,如下所述:
墨水飞溅和高光,由InkWell和InkResponse渲染,
在任何小部件下绘制实际的底层材质
在材质(例如文本和图标)上绘制。如果是不透明的图像
在材料上绘制(可能使用容器或装饰盒),
这些墨水效果将不可见,因为它们将完全可见
被材质上方绘制的不透明图形遮挡
请参阅工作演示:
导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
正文:中(
子项:MyWidget(),
),
),
);
}
}
类MyWidget扩展了无状态Widget{
@凌驾
小部件构建(构建上下文){
退货(
颜色:颜色,红色,
儿童:中心(
孩子:墨水(
装饰:const ShapeDecoration(
颜色:颜色,黑色,
形状:CircleBorder(),
),
孩子:我的钮扣(
图标:图标(Icons.android),
颜色:颜色,白色,
按下:(){},
),
),
),
);
}
}
额外:
如果你真的需要一个容器或其他非物质的小部件,你只需要在Ink小部件和父部件之间添加一个物质小部件。(背景透明)
像这样:
容器(
颜色:颜色,红色,
儿童:材料(
颜色:颜色。透明,
儿童:中心(
孩子:墨水(
装饰:const ShapeDecoration(
颜色:颜色,黑色,
形状:CircleBorder(),
),
孩子:我的钮扣(
图标:图标(Icons.android),
颜色:颜色,白色,
按下:(){},
),
),
),
))