【问题标题】:How to write text in border of container as header/title in flutter如何在容器的边框中写入文本作为颤动中的标题/标题
【发布时间】:2019-04-16 21:24:45
【问题描述】:

如何在容器的边框上写“伙伴”(如下图)

expected output

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您可以使用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;
              }
            }
    

    【讨论】:

      猜你喜欢
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      相关资源
      最近更新 更多