Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在颤振中使用定制裁剪器制作弧形应用程序条_Flutter_Dart_Flutter Appbar - Fatal编程技术网

Flutter 如何在颤振中使用定制裁剪器制作弧形应用程序条

Flutter 如何在颤振中使用定制裁剪器制作弧形应用程序条,flutter,dart,flutter-appbar,Flutter,Dart,Flutter Appbar,嗨,我是新来的 我正在努力使这个应用程序栏这是我的最终目标 我试着按照一些教程制作弯曲的应用程序条 但是我不能得到我想要的结果 在谷歌搜索之后,我可以做这个简单的曲线 这是我使用的clipper代码 class CurvedClipper extends CustomClipper<Path> { @override Path getClip(Size size) { var path = Path(); path.lineTo(0, size.heigh

嗨,我是新来的

我正在努力使这个应用程序栏这是我的最终目标

我试着按照一些教程制作弯曲的应用程序条 但是我不能得到我想要的结果

在谷歌搜索之后,我可以做这个简单的曲线
这是我使用的clipper代码

class CurvedClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    var path = Path();
    path.lineTo(0, size.height - 30);
    path.quadraticBezierTo(
        size.width / 2, size.height, size.width, size.height - 30);
    path.lineTo(size.width, 0);

    path.close();
    return path;
  }

  @override
  bool shouldReclip(CustomClipper<Path> oldClipper) => false;
}
class CurvedClipper扩展了CustomClipper{
@凌驾
路径getClip(大小){
var path=path();
path.lineTo(0,size.height-30);
path.quadraticBezierTo(
尺寸.宽度/2,尺寸.高度,尺寸.宽度,尺寸.高度-30);
path.lineTo(size.width,0);
path.close();
返回路径;
}
@凌驾
bool shouldReclip(CustomClipper oldClipper)=>false;
}
这是我的问题
是否有必要将svg曲线转换为此曲线裁剪器?

要构建类似的东西,您至少需要两个四次贝塞尔曲线和一个三次曲线

我举了一个例子,说明了如何实现一个与图像上的结果最为相似的结果,但它可能需要一些更精细的调整来满足您的需要

代码没有提供任何注释,但您只需更改变量并刷新应用程序(您至少需要了解贝塞尔曲线的工作原理)就可以了解这一点

导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
家:脚手架(
appBar:appBar(
背景颜色:Colors.blue,
形状:CustomShapeOrder(),
前导:图标(图标.菜单),
行动:[
图标按钮(icon:icon(Icons.notifications),按下:(){})
],
),
主体:容器(),
),
);
}
}
类CustomShapeOrder扩展了ContinuousRectangleBorder{
@凌驾
路径getOuterPath(Rect Rect,{TextDirection TextDirection}){
最终双内圆公差=150.0;
路径=路径();
lineTo路径(0,直线高度);
路径二次Bezierto(rect.width/2-(innerCircleRadius/2)-30,rect.height+15,rect.width/2-75,rect.height+50);
path.cubicTo(
矩形宽度/2-40,矩形高度+内环公差-40,
矩形宽度/2+40,矩形高度+innerCircleRadius-40,
矩形宽度/2+75,矩形高度+50
);
路径二次Bezierto(rect.width/2+(innerCircleRadius/2)+30,rect.height+15,rect.width,rect.height);
path.lineTo(rect.width,0.0);
path.close();
返回路径;
}
}

不完全是我想要的,但我想我可以从这里开始,谢谢^^我想问你一些问题,如果我有这个条的svg,是否有任何方法可以使这更容易你可以使用颤振形状生成器来实现这一点。您只需将svg放在Flatter shape maker上,它就会为您的svg文件提供一个CustomPainter dart类。然后,您只需在CustomPaint小部件上使用创建的customPainter。如下所示:CustomPaint(大小:宽度,画家:CustomPainter(),)