Eine Datenbindung akzeptiert List<T>, Konfigurationen oder bestehende DataSource-Instanzen. Bei einer Konfiguration besitzt und entsorgt die Komponente ihre Source; eine übergebene Instanz bleibt Aufgabe der Anwendung. dataSource hat Vorrang vor items. Geteilte Instanzen teilen auch Filter, Suche, Sortierung und Seite. Für unabhängige Ansichten eigene Instanzen verwenden.
Kontrollierte Werte und Listen über on…Changed in den eigenen State übernehmen. Externe TextEditingController entsorgt die Anwendung; interne Controller entsorgt das Widget.
ArrayStores verarbeiten Abfragen lokal; CustomStores standardmäßig auf dem Server. Bei remoteOperations = false müssen CustomStores sämtliche Rohdaten liefern. Der Serververtrag wird von der Anwendung bestimmt; Getter sind nicht serialisierbar. Für serverseitiges Paging totalCount liefern. Kalender und Chat benötigen vollständige Verläufe oder eine bewusst begrenzte Datenmenge; paginate = false lädt alles.
load/reload/configure können fehlschlagen: await mit try/catch verwenden und error anzeigen. Neue Ladevorgänge ersetzen alte; verspätete Antworten überschreiben keinen neueren Zustand. Schlüssel bleiben eindeutig und unveränderlich. Schreiben ohne passende Store-Operation schlägt fehl. push ist keine Transaktion.
Terminenden liegen nach dem Beginn. Ganztagstermine verwenden lokale Tagesgrenzen mit exklusivem Ende. UTC-Zeitpunkte werden lokal dargestellt. Chat zeigt Text, kein HTML; Backend und KI-Dienst richtet die Anwendung ein.
import 'package:tecexpress/tecexpress.dart';
Future<void> example() async {
final source = TxDataSource.array([1, 2], keyOf: (v) => v);
try { await source.load(); } catch (error) { print(error); }
source.dispose();
}