我必须创建一个这样的卡:
我已经编写了下面的代码来实现所需的UI,但未按预期工作。
Card(
elevation: 5,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomRight: Radius.circular(10),
topRight: Radius.circular(10)),
side: BorderSide(width: 5, color: Colors.green)),
child: ListTile(),
)
Run Code Online (Sandbox Code Playgroud)
上面的代码产生了这一点:
而使用以下代码:
Card(
elevation: 5,
shape: Border(right: BorderSide(color: Colors.red, width: 5)),
child: ListTile(),
)
Run Code Online (Sandbox Code Playgroud)
生成此输出:
如何在flutter中创建所需的UI?
小智 42
使用 Card 小部件中的 shape 参数,例如:
Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
),
child: Container() )
Run Code Online (Sandbox Code Playgroud)
你应该把你Card放在一个ClipRRect小部件里面:
return ClipRRect(
borderRadius: BorderRadius.circular(15.0),
child: Card(
elevation: 5,
shape: Border(right: BorderSide(color: Colors.red, width: 5)),
child: ListTile(),
),
);
Run Code Online (Sandbox Code Playgroud)
但我建议您减小 的值,elevation因为它会扭曲小圆形边框。
我已经使用ClipPath来实现问题中提出的UI,请查看以下代码。
Card(
elevation: 2,
child: ClipPath(
child: Container(
height: 100,
decoration: BoxDecoration(
border: Border(right: BorderSide(color: Colors.green, width: 5))),
),
clipper: ShapeBorderClipper(shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(3))),
),
)
Run Code Online (Sandbox Code Playgroud)
如果有更好的方法达到上述结果,请回答。
这个解决方案对我有用。如果我们shape从卡片中移除属性,它会留下矩形的白色角落。没有任何限制elevation。
Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
),
shadowColor: Colors.blueAccent,
elevation: 15,
child: ClipPath(
clipper: ShapeBorderClipper(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15))),
child: Container(
height: 180,
decoration: BoxDecoration(
border: Border(
left: BorderSide(color: Colors.red, width: 15)),
color: Colors.yellowAccent.shade100,
),
padding: EdgeInsets.all(20.0),
alignment: Alignment.centerLeft,
child: Container()),
),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2913 次 |
| 最近记录: |