Erstellen Sie mit Flutter eine verschiebbare Stapel-Widget-Funktion

Erstellen Sie mit Flutter eine verschiebbare Stapel-Widget-Funktion

Dieser Beitrag konzentriert sich auf ein streng geheimes Flutter-Projekt, das ich für den Desktop und das Web entwickelt habe und das eine Canvas- und eine verschiebbare Knotenschnittstelle verwendet. Dieses Tutorial zeigt, wie ich Stapel verwende, um verschiebbare Funktionen mit Widgets zu erreichen.

Wie unten gezeigt.

Beispiel für ein verschiebbares Widget: Shake

Wir werden dem Stapel dynamisch Elemente hinzufügen und um sie zu unterscheiden, werde ich den Typer RandomColor verwenden. Also müssen wir dieses Paket hinzufügen.

zufällige Farbe:

Wir können dann die HomeView erstellen, die unseren Stapel enthält

Klasse HomeView erweitert StatefulWidget {
  @überschreiben
  _HomeViewState createState() => _HomeViewState();
}

Klasse _HomeViewState erweitert State<HomeView> {
  Liste<Widget> beweglicheElemente = [];

  @überschreiben
  Widget erstellen (BuildContext Kontext) {
    Gerüst zurückgeben (
        Körper: Stapel(
          Kinder: bewegliche Gegenstände,
        ));
  }
}

Die Funktionsweise ist denkbar einfach. Wir werden ein MoveableStackItem -Stateful-Widget haben. Es behält seine eigene Position und Farbe im Auge. Die Farbe wird bei der Initialisierung festgelegt und die Position über GestureDetector aktualisiert.

Klasse _MoveableStackItemState erweitert State<MoveableStackItem> {
  doppelte xPosition = 0;
  doppelte yPosition = 0;
  Farbe Farbe;

  @überschreiben
  void initState() {
    Farbe = ZufälligeFarbe().zufälligeFarbe();
    super.initState();
  }

  @überschreiben
  Widget erstellen (BuildContext Kontext) {
    return Positioniert(
      oben: yPosition,
      links: xPosition,
      Kind: GestureDetector(
        beiPanUpdate: (tapInfo) {
          setzeZustand(() {
            xPosition += tapInfo.delta.dx;
            yPosition += tapInfo.delta.dy;
          });
        },
        Kind:Container(
          Breite: 150,
          Höhe: 150,
          Farbe: Farbe,
        ),
      ),
    );
  }
}

Als letztes müssen Sie eine neue MoveableStackItem -Ansicht hinzufügen. Wir tun dies über eine schwebende Aktionsschaltfläche in HomeView.

 Gerüst zurückgeben (
  schwebenderActionButton:SchwimmenderActionButton(
    beim Drücken: () {
      setzeZustand(() {
        beweglichesElemente.add(BeweglichesStackItem());
      });
    },
  ),
  Körper: Stapel(
    Kinder: bewegliche Gegenstände,
  ));

Das ist es. Jetzt haben Sie einen beweglichen Stapel in Ihrer Ansicht.

Dies ist das Ende dieses Artikels zum Erstellen eines verschiebbaren Stapel-Widgets in Flutter. Weitere verwandte Inhalte zum Flutter-Stapel-Widget finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Über 1 Million StackOverflow Flutter 20-Fragen (empfohlen)

<<:  Detaillierte Erklärung verschiedener horizontaler und vertikaler Zentrierungsmethoden in HTML (Grundlagen)

>>:  Detaillierte Erläuterung der MySQL-Deadlock-Prüfung und Beispiele zur Deadlock-Entfernung

Artikel empfehlen

Zwei Methoden zum Strecken des Hintergrundbilds einer Webseite

Es gibt zwei Lösungen: Eine Möglichkeit ist CSS, b...

Beispiele für die Verwendung von HTML-Metadaten

Beispielverwendung Code kopieren Der Code lautet w...

Verwenden Sie zum Senden des Formulars ein Bild statt einer Schaltfläche.

Code kopieren Der Code lautet wie folgt: <form...

Hinweise zum Zeichengerätetreiber des Linux-Kernel-Gerätetreibers

/******************** * Zeichengerätetreiber*****...

Detailliertes Tutorial zur Installation von JDK1.8 unter Linux

1. Reinigung vor der Installation rpm -qa | grep ...

Wie viele gängige Schleifen zur Array-Traversierung in JS kennen Sie?

Vorwort Als grundlegende Datenstruktur spielen Ar...

Analyse des Problems der Hyper-V-Installation unter CentOS 8

CentOS 8 ist schon seit längerem auf dem Markt. A...

Detaillierte Installationsanleitung für das Cloud-Server-Pagoda-Panel

Inhaltsverzeichnis 0x01. Installieren Sie das Pag...

Eine kurze Diskussion zur Auftragsrekonstruktion: MySQL-Sharding

Inhaltsverzeichnis 1. Ziele 2. Umweltvorbereitung...

Beispiel für die reguläre Umschreibmethode für Nginx Rewrite (Matching)

Die Rewrite-Funktion von Nginx unterstützt regelm...

Designtheorie: Die Grundlagen der Schriftgestaltung

<br />Worte sind das unvermeidliche Produkt ...

Drei Eigenschaften von Javascript-Objekten

Inhaltsverzeichnis 1. beschreibbar: beschreibbar ...