只能为统一边界提供 borderRadius

Cod*_*ter 13 dart flutter flutter-layout

使用以下代码时收到警告,但我的应用程序运行良好:

???????? Exception caught by rendering library ?????????????????????????????????????????????????????
The following assertion was thrown during paint():
A borderRadius can only be given for uniform borders.
'package:flutter/src/painting/box_border.dart':
Failed assertion: line 510 pos 12: 'borderRadius == null'
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

           Container(
              height: screenSize.height*.13,
              width: AppSize.medium,
              decoration: BoxDecoration(
                color: Colors.red,
                border: Border(
                  right: BorderSide(
                    width: 1.0,
                    color: Colors.blue
                  ),
                ),
                borderRadius: BorderRadius.only(
                  topRight: Radius.circular(AppSize.small),
                  bottomRight: Radius.circular(AppSize.small),
                )
              ),
            )
Run Code Online (Sandbox Code Playgroud)

ehs*_*eha 15

这是我能想到的最简单的方法……正如你所看到的,有 2 个容器,外部容器的颜色实际上是边框的颜色,内部容器的边距是边框的 strokeWidth 和内部容器是背景色。

Container(
  decoration: BoxDecoration(
    color: Colors.grey[400],

    borderRadius: BorderRadius.only(
      topLeft: const Radius.circular(15.0),
      topRight: const Radius.circular(15.0),
    ),// BorderRadius

  ),// BoxDecoration
  child: Container(
    margin: const EdgeInsetsDirectional.only(start: 2, end: 2, top: 2),
    decoration: BoxDecoration(
      color: Colors.grey[300],

      borderRadius: BorderRadius.only(
        topLeft: const Radius.circular(13.0),
        topRight: const Radius.circular(13.0),
      ),// BorderRadius

    ),// BoxDecoration
  ),// Container
),// Container
Run Code Online (Sandbox Code Playgroud)

这是一个有点愚蠢的答案,但有效!;)

  • 这很棒!我将此逻辑提取到可重用的生产就绪小部件中:https://gist.github.com/rohan20/d12a709a27511304c853334dd636ba63 带有屏幕截图和 DartPad 演示 (2认同)

jov*_*ani 10

只需提供所有其他 BorderSide(左侧、顶部和底部,因为右侧有一个),并将宽度设置为零。


lyi*_*yio 7

Flutter 抱怨是因为您只对容器应用了右边框,但也希望有一个边框半径。

当应用边框半径时,Flutter 期望边框是统一的,即一直围绕并使用相同的颜色。如果您跳转到引发断言错误的来源,您可以查看实际的断言。


小智 5

Container(
decoration: new BoxDecoration(
    gradient: new LinearGradient(
        stops: [0.02, 0.02],
        colors: [Colors.red, Colors.white]
    ),
borderRadius: new BorderRadius.all(const Radius.circular(6.0))))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 解释一下问题和解决方案... (2认同)