gpt4 book ai didi

flutter - 通过 (path.quadraticBezierTo) Flutter 从顶部为容器制作半圆

转载 作者:行者123 更新时间:2023-12-03 04:43:03 45 4
gpt4 key购买 nike

我正在尝试制作如下图所示的形状...

enter image description here

我不知道如何让它像图片一样......

我的代码...

ClipPath(
clipper: MyClipper(),
child: Container(
margin: EdgeInsets.only(top: size.height * 0.6),
height: 500,
width: size.width,
color: Colors.white,
),
),

第一次尝试我在 (0,1) 上做出了第一个点...

class MyClipper extends CustomClipper<Path> {
@override
Path getClip(Size size) {
var path = Path();

path.moveTo(0, size.height);

path.lineTo(0, size.height * 0.2);
// path.lineTo(size.width, size.height);
// path.lineTo(size.width, size.height * 0.5);

path.quadraticBezierTo(size.width / 2, 0, size.width, size.height * 0.2);

path.lineTo(size.width, size.height);

path.close();
return path;
}

@override
bool shouldReclip(CustomClipper<Path> oldClipper) {
return true;
}
}

第二次尝试,我在 (0,0.5) 上提出了第一个点...

class MyClipper extends CustomClipper<Path> {
@override
Path getClip(Size size) {
var path = Path();

path.moveTo(0, size.height * 0.5);

path.quadraticBezierTo(size.width / 2, 0, size.width, size.height * 0.5);

path.lineTo(size.width, size.height);
path.lineTo(0, size.height);

path.close();
return path;
}

@override
bool shouldReclip(CustomClipper<Path> oldClipper) {
return false;
}
}

我知道从底部做它,但我不知道如何做

请我需要答案的解释

最佳答案

解决方案是当我删除margin时效果很好。

我使用margin的原因是因为我希望我的Container位于屏幕底部,我通过回复了margin定位:bottom: 0 位于Stack


Stack(
children: <Widget>[
Positioned(
bottom: 0,
child: ClipPath(
clipper: MyClipper(),
child: Container(
// margin: EdgeInsets.only(top: size.height * 0.5),
height: size.height * 0.45,
width: size.width,
color: Colors.white,
),
),
),
]
),

关于flutter - 通过 (path.quadraticBezierTo) Flutter 从顶部为容器制作半圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62804904/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com