So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

Part_Time_Nerd

Ich versuche, ein einfaches Kinderspiel zu erstellen, bei dem der Benutzer auf ein Bild klicken und es auf ein DragTarget ziehen kann. Die Bilder enthalten schließlich dynamischen Text aus einer Liste, aber sie enthalten derzeit nur eine Zahl, um dies zu simulieren. Wenn ich derzeit auf dem Bild auswähle, bewegt sich nur der Text. Das Bild selbst bleibt stehen. Was ich schließlich möchte, ist, dass das Bild vom Bildschirm verschwindet, sobald es an das DragTarget geliefert wird. Ich habe einige Variationen des folgenden Codes ausprobiert, aber nichts hat funktioniert. Ich gehe davon aus, dass ich eine Form von GestureDetector verwenden muss, aber es ist mir nicht gelungen, einen erfolgreich zu implementieren (mein Code zeigt diese Versuche nicht an). Jede Hilfe oder Beratung wird sehr geschätzt!

 @override
  Widget build(BuildContext context) {
    return new Scaffold(
        body: new Stack(
      children: <Widget>[
        new Container(
          decoration: new BoxDecoration(
            image: new DecorationImage(
              image: new AssetImage("assets/images/landscape_with_tree.png"),
              fit: BoxFit.cover,
            ),
          ),
        ),
        DragBox(Offset(250.0, 50.0), '1'),
        DragBox(Offset(350.0, 50.0), '2'),
        DragBox(Offset(200.0, 100.0), '3'),
        Positioned(
          right: 50.0,
          bottom: 0.0,
          child: DragTarget(
//            onAccept: () {
//            },
            builder: (
              BuildContext context,
              List<dynamic> accepted,
              List<dynamic> rejected,
            ) {
              return Container(
                width: 100.0,
                height: 100.0,
                decoration: BoxDecoration(
                  image: DecorationImage(
                    image: AssetImage("assets/images/basket.png"),
                  ),
                ),
                child: Center(
                  child: Text(
                    'Drag Here!',
                    style: TextStyle(fontWeight: FontWeight.bold),
                  ),

  }

Ziehbare Klasse

class _DragBoxState extends State<DragBox> {
  Offset position = Offset(0.0, 0.0);

  @override
  Widget build(BuildContext context) {
    return Positioned(
      left: position.dx,
      top: position.dy,
      child: Draggable(
        child: Container(
          width: 50.0,
          height: 50.0,
          decoration: BoxDecoration(
            image: DecorationImage(
              image: AssetImage("assets/images/apple.png"),
            ),
          ),
          child: Center(
            child: Text(
              widget.label,
              style: TextStyle(
                color: Colors.white,
                decoration: TextDecoration.none,
                fontSize: 20.0,
              ),
            ),
          ),
        ),
        onDraggableCanceled: (velocity, offset) {
          setState(() {
            position = widget.initPos;
          });
        },
        feedback: Container(
          width: 60.0,
          height: 60.0,
          child: Center(
            child: Text(
              widget.label,
              style: TextStyle(
                color: Colors.white,
                decoration: TextDecoration.none,
                fontSize: 18.0,
              ),
Part_Time_Nerd

Ich bin mir nicht sicher, ob dies der effizienteste oder beste Weg ist, aber ich habe die folgende Lösung zum Laufen gebracht. Bitte lassen Sie es mich wissen, wenn Sie einen besseren Weg haben!

class _DragBoxState extends State<DragBox> {
  Offset position = Offset(0.0, 0.0);
  AssetImage apple;
  AssetImage _imageToShow = new AssetImage('assets/images/apple.png');

  @override
  void initState() {
    super.initState();
    position = widget.initPos;
  }

  @override
  Widget build(BuildContext context) {
    return Positioned(
      left: position.dx,
      top: position.dy,
      child: Draggable<AssetImage>(
        data: apple,
        child: Container(
          width: 50.0,
          height: 50.0,
          decoration: BoxDecoration(
            image: DecorationImage(
              image: _imageToShow,
            ),
          ),
          child: Center(
            child: Text(
              widget.label,
              style: TextStyle(
                color: Colors.black,
                decoration: TextDecoration.none,
                fontSize: 18.0,
              ),
            ),
          ),
        ),
        onDraggableCanceled: (velocity, offset) {
          setState(() {
            position = widget.initPos;
          });
        },
        onDragStarted: () {
          setState(() {
            print('drag started');
            _imageToShow = new AssetImage('assets/images/answered_apple.png');
            return _imageToShow;
          });
        },
        feedback: Container(
          width: 60.0,
          height: 60.0,
          decoration: BoxDecoration(
            image: DecorationImage(
              image: _imageToShow,
            ),
          ),
          child: Center(
            child: Text(
              widget.label,
              style: TextStyle(
                color: Colors.black,
                decoration: TextDecoration.none,
                fontSize: 16.0,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv