如何在Flutter中在屏幕顶部创建一个半椭圆形?

问题描述 投票:0回答:2

有没有一种方法可以在屏幕顶部创建椭圆形?我尝试使用RenderBox,但觉得它不是正确的解决方案。enter image description here

flutter flutter-layout
2个回答
1
投票

使用CustomPainter并播放曲线:

enter image description here

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            CustomPaint(
              painter: ShapesPainter(),
              child: Container(height: 300),
            ),
            Text('Text')
          ],
        ),
      ),
    );
  }
}

const double _kCurveHeight = 35;

class ShapesPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final p = Path();
    p.lineTo(0, size.height - _kCurveHeight);
    p.relativeQuadraticBezierTo(size.width / 2, 2 * _kCurveHeight, size.width, 0);
    p.lineTo(size.width, 0);
    p.close();

    canvas.drawPath(p, Paint()..color = Colors.red);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return true;
  }
}

0
投票

在颤动中绘制半个椭圆的最佳方法是使用CustomPainter。

Container(
  child: CustomPaint( // Widget
    painter: PainterDetails(), // CustomPainterClass
  ),
),

// CustomPainterClass
class PainterDetails extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    // here is where you will draw the half oval using canvas Paint class and Path class
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return true;
  }
}

您可以使用quadraticBezierTo函数绘制曲线。

© www.soinside.com 2019 - 2024. All rights reserved.