Wie man VoidCallback und Function(x) Callbacks zur Kommunikation zwischen Widgets in Flutter verwendet

bardimin pic

Geschrieben von Bardimin

14 März 2023
Home » Blogs » Software » Wie man VoidCallback und Function(x) Callbacks zur Kommunikation zwischen Widgets in Flutter verwendet

In kann die Kommunikation zwischen Widgets VoidCallback und Function Callback verwenden.

VoidCallbacks sind Rückrufe, die keinen Wert an das Parent zurückgeben. Dies ist nützlich, wenn wir das Parent nur über Ereignisse informieren wollen, die im aufgetreten sind.

Die Funktion Callback ist ein Rückruf, der das übergeordnete Widget über ein Ereignis informiert, das im untergeordneten Widget auftritt, und der auch einen Wert an das übergeordnete Widget zurückgibt.

typedef VoidCallback = void Function();

VoidCallbacks und Function Callbacks sind beides Funktionen. Der einzige Unterschied ist, dass VoidCallback keine Argumente hat und keine Daten zurückgibt.

In diesem Artikel wird Bardimin ein einfaches Beispiel für die Verwendung von VoidCallback und Function Callback in einer einfachen geben

1. Erstellen Sie ein neues Flutter-Projekt

In einem ersten Schritt erstellen Sie ein neues -Projekt mit Studio. Sie können sich die Integration von Flutter und Studio in dem Artikel How to Easily Install Flutter on Android Studio and Windows.

Sobald das neue Projekt erstellt ist, werden wir die Beispieldatei ändern, um eine einfache zu erstellen, die VoidCallback und Function Callback verwendet.

In der Datei „main.dart“ wie folgt ändern.

import 'package:flutter/material.dart';
import 'parent_widget.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const ParentWidgetPage(title: 'Flutter VoidCallback & Function Callback'),
    );
  }
}

2. Ein übergeordnetes Widget erstellen

Erstellen Sie dann eine neue Datei mit dem Namen „parent_widget.dart“. In dieser Datei werden wir die Funktionen „_voidCallback“ und „_functionCallback“ erstellen, die wir vom Child-Widget aus aufrufen werden.

Wir werden die Funktion „_voidCallback“ mit „VoidCallback“ aufrufen.

  void _voidCallback() {
    setState(() {
      _counter++;
    });
  }

Wir werden die Funktion „_functionCallback(int i)“ mit Parametern über „Function(x) Callback“ aufrufen.

  void _functionCallback(int i) {
    setState(() {
      _counter += i;
    });
  }

Die Datei „parent_widget.dart“, die wir erstellt haben, ist wie folgt vollständig.

import 'package:flutter/material.dart';
import 'voidcallback_child_widget.dart';
import 'function_child_widget.dart';

class ParentWidgetPage extends StatefulWidget {
  const ParentWidgetPage({Key? key, required this.title}) : super(key: key);
  final String title;
  @override
  State<ParentWidgetPage> createState() => _ParentWidgetPageState();
}

class _ParentWidgetPageState extends State<ParentWidgetPage> {
  int _counter = 0;

  void _voidCallback() {
    setState(() {
      _counter++;
    });
  }

  void _functionCallback(int i) {
    setState(() {
      _counter += i;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
      floatingActionButton: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
            VoidChildWidgetPage(voidCallback: _voidCallback),
            FunctionChildWidgetPage(functionCallback: _functionCallback),
          ],
        ),
      ),
    );
  }
}

3. Ein VoidCallback Child-Widget erstellen

Als nächstes erstellen Sie die Datei „voidcallback_child_widget.dart“. In dieser Datei werden wir eine Schaltfläche erstellen, die die Funktion „_voidCallback“ in der Datei „parent_widget.dart“ aufruft.

import 'package:flutter/material.dart';

class VoidChildWidgetPage extends StatelessWidget {
  final VoidCallback voidCallback;

  const VoidChildWidgetPage({Key? key, required this.voidCallback})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () => voidCallback(),
      child: const Text("Void Callback"),
    );
  }
}

4. Ein untergeordnetes Widget mit Funktionsrückruf erstellen

Erstellen Sie dann eine Datei „function_ child_widget.dart“. Genau wie zuvor werden wir auch in dieser Datei eine Schaltfläche erstellen, die die Funktion „_functionCallback(int i)“ in der Datei „parent_widget.dart“ aufruft, die einen Integer-Wert zurückgibt.

import 'package:flutter/material.dart';

class FunctionChildWidgetPage extends StatelessWidget {
  final Function(int) functionCallback;

  const FunctionChildWidgetPage({Key? key, required this.functionCallback})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () => functionCallback(5),
      child: const Text("Fx Callback"),
    );
  }
}

Starten Sie dann das Projekt. Auf dem sehen Sie, dass es zwei Schaltflächen gibt, nämlich die Schaltflächen „VoidCallback“ und „Fx Callback“.

void callback

Wenn Sie auf die Schaltfläche „VoidCallback“ klicken, ruft das Child-Widget „VoidCallback“ einfach die Funktion „_voidCallback“ des Parent-Widgets auf und gibt keinen Wert zurück.

Wenn Sie in der Zwischenzeit auf die Schaltfläche „Fx Callback“ klicken, ruft das Child-Widget „Function Callback“ die Funktion „_functionCallback(int i)“ des Parent-Widgets auf, indem es einen Integer-Wert zurückgibt.

Neueste Artikel

So summieren Sie Spalten und Zeilen in einer Microsoft Word-Tabelle

So summieren Sie Spalten und Zeilen in einer Microsoft Word-Tabelle

Microsoft Word ist als beliebtes Programm zum Bearbeiten von Dokumenten bekannt, aber wussten Sie, dass Sie auch Berechnungen in Word durchführen können? Eine der größten Herausforderungen bei der manuellen Dateneingabe ist die Möglichkeit von Fehlern bei der...

URLs mit der HOSTS-Datei unter Windows umleiten und blockieren

URLs mit der HOSTS-Datei unter Windows umleiten und blockieren

URLs können Sie unter Windows einfach umleiten und blockieren. Indem Sie einfach die IP einer Website hinzufügen, können Sie sie umleiten oder blockieren. Dies ist natürlich sehr nützlich, um den Zugriff Ihrer Mitarbeiter oder Kinder auf Websites einzuschränken, die...

So umgehen Sie ein vergessenes BIOS-Passwort

So umgehen Sie ein vergessenes BIOS-Passwort

Wenn Sie ein BIOS-Passwort für Ihren PC/Laptop erstellt und vergessen haben, müssen Sie es möglicherweise an den Hersteller zurücksenden. Keine Sorge, es gibt immer noch mehrere Methoden, mit denen Sie das BIOS-Passwort umgehen oder entsperren können. Das...

So funktioniert die Proxy-Anonymität

So funktioniert die Proxy-Anonymität

Der Informationsaustausch im Internet erfolgt über ein Client-Server-Modell. Der Client sendet eine Anfrage (welche Dateien er benötigt) und der Server sendet eine Antwort (welche Dateien er benötigt). Für eine enge Zusammenarbeit (vollständiges Verständnis) zwischen...