GetX: Unterschied zwischen den Versionen

Aus Info-Theke
Zur Navigation springen Zur Suche springen
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 20: Zeile 20:
* Überwachte Variablen werden mit .obs markiert.
* Überwachte Variablen werden mit .obs markiert.
* Zugriff auf Variable: myObsVar.value
* Zugriff auf Variable: myObsVar.value
* Ändert sich ein Variablenwert, muss update() aufgerufen werden.
* Widgets, die überwachte Variablen verwenden: mit <code>Obs( () => Widget(...))</code> kapseln.
* Der Controller wird normalerweise in einer Screen-Klasse als Klassenvariable initialiert und mit Get.put() bekanntgemacht:
* Wenn Automatik nicht funktioniert: update() aufgerufen werden.
* Eine View-Klasse, die einen Controller hat:
<syntaxhighlight lang=dart>
<syntaxhighlight lang=dart>
class FileSelectView extends GetView<FileSelectController> {
...
}
</syntaxhighlight>
* Sind mehrere Controller beteiligt, werden diese mit <code>Get.put()</code> und mit <code>final c = Get.find()</code> geholt.
** Es kann ein '''Tag''' zur Unterscheidung benutzt werden.
<syntaxhighlight lang=dart>
const todoTag = 'todo';
class HomeScreen extends StatelessWidget {
class HomeScreen extends StatelessWidget {
   final TodoController todoController = Get.put(TodoController());
   final TodoController todoController = Get.put(TodoController(), todoTag);
...
}
class AnyClass {
  final ToController todoController = Get.find(todoTag);
...
...
}
}
</syntaxhighlight>
</syntaxhighlight>

Aktuelle Version vom 24. August 2022, 17:13 Uhr

Links[Bearbeiten]

Einleitung[Bearbeiten]

GetX ist ein Flutter-Paket https://pub.dev/packages/get, das Zustandsmanagement und unkompliziertes Routing von Flutter-Apps erlaubt.

Zustandsmanagement[Bearbeiten]

In Controllern werden Variablen als "zu überwachen" markiert. Widgets auf Seiten werden mit Werten dieser überwachten Variablen belegt.

Ändert sich der Wert einer überwachten Variablen, ändert sich automatisch jedes darauf Bezug nehmendes Widget automatisch. Dies wird intern mit Streams realisiert.

Unkompliziertes Routing[Bearbeiten]

Es kann an jeder Stelle im Programm eine andere Seite aufgerufen werden, ohne dass der "Context" bekannt ist.

Anwendung[Bearbeiten]

Controller[Bearbeiten]

  • Controller sind Klassen, die von GetxController abgeleitet sind.
  • Überwachte Variablen werden mit .obs markiert.
  • Zugriff auf Variable: myObsVar.value
  • Widgets, die überwachte Variablen verwenden: mit Obs( () => Widget(...)) kapseln.
  • Wenn Automatik nicht funktioniert: update() aufgerufen werden.
  • Eine View-Klasse, die einen Controller hat:
class FileSelectView extends GetView<FileSelectController> {
...
}
  • Sind mehrere Controller beteiligt, werden diese mit Get.put() und mit final c = Get.find() geholt.
    • Es kann ein Tag zur Unterscheidung benutzt werden.
const todoTag = 'todo';
class HomeScreen extends StatelessWidget {
  final TodoController todoController = Get.put(TodoController(), todoTag);
...
}
class AnyClass {
  final ToController todoController = Get.find(todoTag);
...
}