【发布时间】:2019-04-16 21:24:45
【问题描述】:
如何在容器的边框上写“伙伴”(如下图)
【问题讨论】:
标签: flutter
如何在容器的边框上写“伙伴”(如下图)
【问题讨论】:
标签: flutter
您可以使用CustomPainter 或自定义ShapeBorder,这是使用ShapeBorder 的示例:
class CustomBorderWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Material(
color: Colors.black,
shape: _HexagonBorder(),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 30.0),
child: Text(
"Partnership",
style: TextStyle(color: Colors.white, fontWeight: FontWeight.w600),
),
),
);
}
}
class _HexagonBorder extends ShapeBorder {
const _HexagonBorder();
@override
EdgeInsetsGeometry get dimensions {
return const EdgeInsets.only();
}
@override
Path getInnerPath(Rect rect, {TextDirection textDirection}) {
return getOuterPath(rect, textDirection: textDirection);
}
@override
Path getOuterPath(Rect rect, {TextDirection textDirection}) {
return Path()
..moveTo(rect.left + rect.width / 6.0, rect.top)
..lineTo(rect.right - rect.width / 6.0, rect.top)
..lineTo(rect.right, rect.top + rect.height / 2.0)
..lineTo(rect.right - rect.width / 6.0, rect.bottom)
..lineTo(rect.left + rect.width / 6.0, rect.bottom)
..lineTo(rect.left, rect.bottom - rect.height / 2.0)
..close();
}
@override
void paint(Canvas canvas, Rect rect, {TextDirection textDirection}) {}
// This border doesn't support scaling.
@override
ShapeBorder scale(double t) {
return null;
}
}
【讨论】: