Pakete, Repositories und App-Kategorien suchen

Paketdetailsv0.2.0

reactives

Eine neue Möglichkeit, gemeinsame Logik von StatefulWidget zu extrahieren/gruppieren/wiederzuverwenden. Stellen Sie sich diese wie React-Hooks vor, aber für Flutter.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
37
Likes
44
Pub-Punkte
140

Paket installieren

flutter pub add reactives

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

ReactiveS ist ein Flutter/Dart-Paket, das Entwicklern ermöglicht, Zustandslogik aus StatefulWidget-Komponenten mithilfe eines hookähnlichen Musters, das von React inspiriert ist, zu extrahieren, zu gruppieren und wiederzuverwenden. Es vereinfacht komplexe Zustandsverwaltung, indem es wiederverwendbare, zusammensetzbare Einheiten von zustandsbehaftetem Verhalten ermöglicht. Für sauberen, modularen Code konzipiert, fördert es die Trennung der Anliegen und reduziert Boilerplate. Das Paket unterstützt alle wichtigen Plattformen und ist daher ideal für plattformübergreifende Apps, die strukturierte Zustandsverwaltung ohne externe Abhängigkeiten benötigen.

Anwendungsfälle

  • Wiederverwendbare Zustandslogik über Widgets hinweg
  • Komplexe StatefulWidget-Klassen vereinfachen
  • Plattformübergreifende Zustandsverwaltung
  • Modulare UI-Entwicklung
  • Boilerplate in Zustandskomponenten reduzieren
  • Wiederholte Zustandsmuster ersetzen

Hauptmerkmale

  • Hook-ähnliche Syntax für Flutter
  • Zustandslogikextraktion und -wiederverwendung
  • Zusammensetzbare Zustands-Einheiten
  • Plattformübergreifende Unterstützung
  • Minimales Boilerplate
  • Klare Trennung von Zustand und UI

Geeignet für

  • Entwickler, die React-artige Hooks in Flutter suchen
  • Teams, die die Komplexität von StatefulWidget verringern möchten
  • Projekte, die modulare Zustandsverwaltung erfordern
  • Plattformübergreifende Flutter-Anwendungen
  • Ersteller wiederverwendbarer Benutzeroberflächenkomponenten

Hinweise

  • Erfordert Verständnis funktionaler Programmierkonzepte
  • Kann eine Lernkurve für Anfänger mit sich bringen
  • Keine vollständige State-Management-Lösung
  • Am besten geeignet für kleinere bis mittlere Zustandslogik
  • Eingeschränkte Dokumentation im Vergleich zu reifen Bibliotheken

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

reactives

A new way for Flutter to reuse/group common logic. Think of them like React hooks but for and of flutter.

Idea copied from the lit world

Motive

Have you ever written code like this?

class AwesomeWidget extends StatefulWidget {
  const AwesomeWidget({Key? key}) : super(key: key);

  @override
  _AwesomeWidgetState createState() => _AwesomeWidgetState();
}

class _AwesomeWidgetState extends State<AwesomeWidget>
    with TickerProviderStateMixin {
  late final TextEditingController emailCtrl;
  late final TextEditingController passwordCtrl;
  late final AnimationController entryAnimation;
  late final AnimationController highLightAnimation;

  @override
  void initState() {
    super.initState();
    emailCtrl = TextEditingController();
    passwordCtrl = TextEditingController();
    entryAnimation = AnimationController(vsync: this);
    highLightAnimation = AnimationController(vsync: this);
  }

  @override
  void dispose() {
    emailCtrl.dispose();
    entryAnimation.dispose();
    highLightAnimation.dispose();
    passwordCtrl.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

There are a couple of problems here.

  • Most of the object management logic is generic and can be reused.
  • It is extremely easy to forget that one dispose call (confession).
  • Coupling the logic to the widget makes it harder to test.

Using reactives this gets transformed to,

class AwesomeReactiveWidget extends StatefulWidget {
  const AwesomeReactiveWidget({Key? key}) : super(key: key);

  @override
  _AwesomeReactiveWidgetState createState() => _AwesomeReactiveWidgetState();
}

class _AwesomeReactiveWidgetState extends State<AwesomeReactiveWidget> with ReactiveHostMixin {
  late final emailCtrl = ReactiveTextEditingController(this);
  late final passwordCtrl = ReactiveTextEditingController(this);
  late final entryAnimation = ReactiveAnimationController(this);
  late final exitAnimation = ReactiveAnimationController(this);

  @override
  Widget build(BuildContext context) {
    return Container(
        // ....
    );
  }
}

See Examples for examples of writing a reactive or just browse the source, it's really small.

Comparision to flutter_hooks:

From a user perspective flutter_hooks is a replacement for StatefulWidget. reactives is not. If you look at the code for ReactiveHostMixin it is about 60 lines (blank lines included). Reactives do not try to replace StatefulWidget, it just solves the reusability problem inherent due to mixin's "is-a" relationship. Reactives have a "has-a" relationship.

There are no new rules to writing reactives. See examples of existing reactives. It is basically the same logic isolated in a different class. For the same reason it doesn't need a lot of the hooks like useState which would be needed if tried to replace StatefulWidget.

The learning curve of reactives is next to negligible. Hooks need you to learn a few concepts and how to/not to do things. It also requires you to transform entire widgets. Reactives can be adapted incrementally even for a single widget.

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.