buildWithOutline method
构建带轮廓的 Widget(需要在 build 方法中调用)
Implementation
Widget buildWithOutline() {
final widget = build();
if (_outlineWidth == null || _outlineWidth == 0) {
return widget;
}
// 通过 Stack 和多个 Container 来实现 outline 效果
// outline 是 border 外面的轮廓,可以通过叠加边框来实现
return Stack(
children: [
// 外层轮廓(offset 偏移)
if (_outlineOffset != null && _outlineOffset! > 0)
Positioned.fill(
child: Container(
margin: EdgeInsets.all(_outlineOffset!),
decoration: BoxDecoration(
border: Border.all(
color: _outlineColor ?? Colors.black,
width: _outlineWidth ?? 2.0,
),
borderRadius: _borderRadius,
),
),
)
else
Container(
decoration: BoxDecoration(
border: Border.all(
color: _outlineColor ?? Colors.black,
width: _outlineWidth ?? 2.0,
),
borderRadius: _borderRadius,
),
child: widget,
),
// 如果 offset 为 0,直接叠加
if (_outlineOffset == null || _outlineOffset == 0)
widget,
],
);
}