Zeichnen von Linien mit flattern

Gibt es eine Möglichkeit, die Anzeige neigen Ränder oben und unten?
Ich kam mit der Lösung unter mithilfe von zwei Bildern (top_layout und bottom_layout.png). Gibt es irgendeine andere Möglichkeit, diese Farb-Balken mit Schatten ohne Verwendung von statischen Bildern?

return Container(
      color: const Color.fromARGB(255, 236, 0, 140),
      child: Container(
        padding: const EdgeInsets.all(8.0),
        child: Container(
          color: Colors.white,
          margin:
              EdgeInsets.only(top: 60.0, bottom: 20.0, left: 15.0, right: 15.0),
          child: Stack(
            children: <Widget>[
              Positioned.fill(
                child: Image.asset(
                  "assets/imgs/top_layout.png",
                  fit: BoxFit.fitWidth,
                  alignment: Alignment.topCenter,
                ),
              ),
              Positioned.fill(
                child: Image.asset(
                  "assets/imgs/xbottom_layout.png",
                  fit: BoxFit.fitWidth,
                  alignment: Alignment.bottomLeft,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
InformationsquelleAutor user969068 | 2019-02-13



2 Replies
  1. 2

    Wie zeichnen von Linien in Flattern mit den CustomPaint-widget

    Zeichnen von Linien mit flattern

    Zu malen Flattern verwenden Sie die CustomPaint widget. Die CustomPaint widget nimmt eine CustomPainter – Objekt als parameter. In dieser Klasse überschreiben die paint – Methode, die gibt Ihnen eine Leinwand Sie malen auf. Hier ist der code zum zeichnen der Linie in dem Bild oben.

    @override
    void paint(Canvas canvas, Size size) {
      final p1 = Offset(50, 50);
      final p2 = Offset(250, 150);
      final paint = Paint()
        ..color = Colors.black
        ..strokeWidth = 4;
      canvas.drawLine(p1, p2, paint);
    }

    Hinweise:

    • Die drawLine Methode zeichnet eine verbindende Linie zwischen die zwei Punkte, die es Ihnen.
    • Eine Offset ist ein paar (dx, dy) Doppel -, offset von der linken oberen Ecke des CustomPaint widget.

    Eine weitere option

    Könnte man etwas ähnliches machen mit der drawPoints Methode mit der PointMode.polygon option.

    Zeichnen von Linien mit flattern

    @override
    void paint(Canvas canvas, Size size) {
      final pointMode = ui.PointMode.polygon;
      final points = [
        Offset(50, 100),
        Offset(150, 75),
        Offset(250, 250),
        Offset(130, 200),
        Offset(270, 100),
      ];
      final paint = Paint()
        ..color = Colors.black
        ..strokeWidth = 4
        ..strokeCap = StrokeCap.round;
      canvas.drawPoints(pointMode, points, paint);
    }

    Kontext

    Hier ist die main.dart – code, so dass Sie sehen können, es im Kontext.

    import 'dart:ui' as ui;
    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            body: HomeWidget(),
          ),
        );
      }
    }
    
    class HomeWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Center(
          child: CustomPaint( //                      <-- CustomPaint widget
            size: Size(300, 300),
            painter: MyPainter(),
          ),
        );
      }
    }
    
    class MyPainter extends CustomPainter { //        <-- CustomPainter class
      @override
      void paint(Canvas canvas, Size size) {
        //                                            <-- Insert your painting code here.
      }
    
      @override
      bool shouldRepaint(CustomPainter old) {
        return false;
      }
    }

    Siehe auch

    Sehen dieser Artikel für meine vollere Antwort.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.