栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

颤振曲线

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

颤振曲线

制作一个

ShapeBorder
像这样的自定义类(关键方法是
_getPath
返回形状的
Path
):

class CustomShapeBorder extends ShapeBorder {  const CustomShapeBorder();  @override  Path getInnerPath(Rect rect, {TextDirection textDirection}) => _getPath(rect);  @override  Path getOuterPath(Rect rect, {TextDirection textDirection}) => _getPath(rect);  _getPath(Rect rect) {    final r = rect.height / 2;    final radius = Radius.circular(r);    final offset = Rect.fromCircle(center: Offset.zero, radius: r);    return Path()      ..moveTo(rect.topLeft.dx, rect.topLeft.dy)      ..relativeArcToPoint(offset.bottomRight, clockwise: false, radius: radius)      ..lineTo(rect.center.dx - r, rect.center.dy)      ..relativeArcToPoint(offset.bottomRight, clockwise: true, radius: radius)      ..relativeArcToPoint(offset.topRight, clockwise: true, radius: radius)      ..lineTo(rect.centerRight.dx - r, rect.centerRight.dy)      ..relativeArcToPoint(offset.topRight, clockwise: false, radius: radius)      ..addRect(rect);  }  @override  EdgeInsetsGeometry get dimensions {    return EdgeInsets.all(0);  }  @override  ShapeBorder scale(double t) {    return CustomShapeBorder();  }  @override  void paint(Canvas canvas, Rect rect, {TextDirection textDirection}) {  }}

现在您可以像这样使用它:

    Container(      margin: EdgeInsets.only(top: 80),      height: 50,      width: double.infinity,      decoration: ShapeDecoration(        shape: CustomShapeBorder(),        //color: Colors.orange,        gradient: LinearGradient(colors: [Colors.blue, Colors.orange]),        shadows: [          BoxShadow(   color: Colors.black, offset: Offset(3, -3), blurRadius: 3),        ],      ),    ),

结果:



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425821.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号