做两个圆角和两个直切而不是颤动中的曲线

Posted

技术标签:

【中文标题】做两个圆角和两个直切而不是颤动中的曲线【英文标题】:Make two corner rounded and two straight cut instead of curve in flutter 【发布时间】:2020-06-19 05:13:02 【问题描述】:

我怎样才能使下面的瓷砖像设计一样飘动,两侧有点弯曲,两侧的其余部分是平直的,曲线柔和。我可以制作两个圆角和两个不圆角,但无法制作像下面这样的。任何人都知道如何制作这样的瓷砖。我使用过 RoundRect、ClipRRect 和 Container,但无法制作这样的 Widget。任何帮助都将不胜感激。

提前感谢您的时间和精力。

【问题讨论】:

制作一个自定义的ShapeBorder 类,就像制作RoundedRectangleBorderBeveledRectangleBorder 一样 能否提供sn-p的代码。我想,我也试过了。 api.flutter.dev/flutter/painting/…“RoundedRectangleBorder class”标签旁边有一个蓝色的小图标,点击它,对BeveledRectangleBorder做同样的事情 【参考方案1】:

你是这样做的:

            Material(
              clipBehavior: Clip.antiAlias,
              shape: BeveledRectangleBorder(
                 // side: BorderSide(color: Colors.blue), if you need
                  borderRadius: BorderRadius.only(
                      topLeft: Radius.circular(20.0),
                      bottomRight: Radius.circular(20.0))),
              child: Container(
                height: 100,
                width: 100,
               decoration: BoxDecoration(
                          color: Colors.red,
                          borderRadius: BorderRadius.circular(15.0),
                        ),
              ),
            ),

如果您需要实现,这里是您提供的图像的代码:

            Row(
              children: <Widget>[
                Expanded(
                  child: Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Material(
                      clipBehavior: Clip.antiAlias,
                      shape: BeveledRectangleBorder(
                          borderRadius: BorderRadius.only(
                              topLeft: Radius.circular(20.0),
                              bottomRight: Radius.circular(20.0))),
                      child: Container(
                        height: 100,
                        decoration: BoxDecoration(
                          color: Colors.blue,
                          borderRadius: BorderRadius.circular(15.0),
                        ),
                      ),
                    ),
                  ),
                ),
                Expanded(
                  child: Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Material(
                      clipBehavior: Clip.antiAlias,
                      shape: BeveledRectangleBorder(
                          borderRadius: BorderRadius.only(
                              topLeft: Radius.circular(20.0),
                              bottomRight: Radius.circular(20.0))),
                      child: Container(
                        height: 100,
                        decoration: BoxDecoration(
                          color: Colors.black,
                          borderRadius: BorderRadius.circular(15.0),
                        ),
                      ),
                    ),
                  ),
                ),
                Expanded(
                  child: Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Material(
                      clipBehavior: Clip.antiAlias,
                      shape: BeveledRectangleBorder(
                          borderRadius: BorderRadius.only(
                              topLeft: Radius.circular(20.0),
                              bottomRight: Radius.circular(20.0))),
                      child: Container(
                        height: 100,
                        decoration: BoxDecoration(
                          color: Colors.red,
                          borderRadius: BorderRadius.circular(15.0),
                        ),
                      ),
                    ),
                  ),
                ),
              ],
            ),

【讨论】:

您正在使用两层,这就是我所缺少的。谢谢你的时间。

以上是关于做两个圆角和两个直切而不是颤动中的曲线的主要内容,如果未能解决你的问题,请参考以下文章

在ggplot2中的两个位置之间绘制曲线

如何将2条提升曲线的图形合并到Python中的单个图形中

onenote怎么画树状图

iOS:贝塞尔曲线(UIBezierPath)-----Swift

svg path中的贝塞尔曲线

matlab中怎么根据已经出来的两根曲线,去画出这两个曲线之间的相差值曲线,就像这两个图,怎么计算相差