【发布时间】:2020-05-29 16:07:30
【问题描述】:
通过使用 CustomPainter,我创建了一个半圆。现在我有了这个小部件树:
return Scaffold(
body: Center(
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(
// card view
height: 100,
alignment: Alignment.center,
margin: EdgeInsets.only(
top: 20.0, bottom: 0.0, left: 50.0, right: 50.0),
decoration: BoxDecoration(
boxShadow: ([
BoxShadow(
color: color_transparent_black,
spreadRadius: 5,
blurRadius: 3.0,
offset: Offset(2, 3),
),
]),
borderRadius: BorderRadius.circular(14.0),
),),
MyArc(diameter: 200),
这是 MyArc:
class MyArc extends StatelessWidget {
final double diameter;
const MyArc({Key key, this.diameter = 200}) : super(key: key);
@override
Widget build(BuildContext context) {
return CustomPaint(
painter: MyPainter(),
size: Size(diameter, diameter),
);
}
}
// This is the Painter class
class MyPainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
Paint paint = Paint()..color = Colors.blue;
canvas.drawArc(
Rect.fromCenter(
center: Offset(size.height / 2, 0),
height: size.height,
width: size.width,
),
6.4,
2.9,
false,
paint,
);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => false;
}
但我遇到了这个问题:
我不想要灰色和蓝色形状之间的任何空间!!!
【问题讨论】:
-
你试过在你的容器上添加翻译吗?...
Container(transform: Matrix4.identity()..translate(0.0, 10.0, 0.0) //card view...) -
我知道问题是因为
MyArc!但我无法修复它@AshwynHorton -
我明白了……其实我还以为是因为有阴影才这么做的……所以如果你去掉阴影,那间隙还会存在吗?
-
我删除了一个阴影并打开了开发工具,结果如下:pasteall.org/media/0/e/0e626757a5ea4dfcb915f3dd32ccb07b.png@AshwynHorton
-
MyArc导致此问题@AshwynHorton