3.5 KiB
Flutter App
Gerade für zukünftige Entwickler wäre ein Grundverständnis des Quellcodes vom Vorteil. Die App wurde mit Flutter entwickelt und benötigt daher ein Verständnis von Dart und im Kontext von Flutter das Wissen über Widgets.
Vortwort
Künftige Generationen könnten dart doc
im Root-Verzeichnis der App ausführen, um eine etwas deutlichere Doku zu erhalten. Daher wird oberflächlich auf einzelne Dateien eingegangen.
Übersicht
Der grundlegende Code liegt unter lib
und ist in mehrere Bereiche aufgeteilt.
Die Struktur:
objects
: Eigenständige Objekte, welche autonom über verschiedene Seiten hinweg verwendet werden können.schemas
: Objektklassen, die zum parsen für Objekte verwendet werden.screens
: Sämtliche Widgets, welche Screens generieren.widgets
: Widgets, welche autonom über verschiedene Seiten hinweg verwendet werden können.
Des weiteren werden die Dateien beschrieben, welche signifikant für das Projekt zum Verständnis des Ablaufes sind.
Objects / bluetooth_object.dart
die BluetoothObject-Klasse dient dazu, eine Bluetooth-Verbindung an ein Objekt zu binden und darin zu verwalten.
Methoden
bondDevice(BuildContext context)
: startet ein Pairing oder trennt eine solche Verbindung.disconnectDevice()
: Trennt die Bluetooth-Verbindung zum GerätconnectDevice()
: Verbindet die App zum Gerät über BluetoothconnectionOnListen(Uint8List data)
: Ein Event Listener, welcher bei eingehenden Daten ausschlägt. Die Methode wartet auf das ASCII-Symbol "10", um den Input auf den String "fingerprint {fingerprint}" zu untersuchen. "{fingerprint}" steht hierbei für den Fingerprint der Key-FilesendData(BuildContext context, String output)
: Nutzt die Bluetooth-Verbindung, um Daten encodiert als ASCII zu verschicken._registerDevice()
: Startet die Geräte-Registrierung_confirmRegistration(bool registered)
: Erzeugt einen Bestätigungs-Katalog
Objects / cloud_service_api.dart
Die CloudServiceAPI-Klasse dient dazu, um sich mit der Azure Cloud auszutauschen. Die Klasse enthält Methoden, um mit der API zu interagieren, wie z.B. das Abrufen von Gerätelisten, das Abrufen von Geräteinformationen, das Erstellen von Geräten und das Überprüfen der Verfügbarkeit von Gerätenamen.
Methoden
getDevices()
: HTTP-GET-Aufruf an den Endpunkt /api/devices der API und gibt die Antwort als Liste von DeviceModel-Objekten zurück.getDeviceInfo(String deviceID)
: HTTP-GET-Aufruf an den Endpunkt /api/devices/{deviceID} der API und gibt die Antwort als DeviceInfoModel-Objekt zurück.getDevicesInfo()
: HTTP-GET-Aufruf an den Endpunkt /api/devices der API und gibt die Antwort als Liste von DeviceInfoModel-Objekten zurück.createDevice(String id, String pThumbprint, String sThumbprint)
: HTTP-POST-Aufruf an den Endpunkt /api/devices der API und erstellt ein neues Gerät mit den übergebenen Parametern id, primaryThumbprint, secondaryThumbprint.checkNameAvailability(String inputID)
: Überprüft die Verfügbarkeit einer ID, indem die aktuelle Liste der Geräte abgefragt wird und die übergebene ID mit den vorhandenen IDs verglichen wird.showNameAvailabilityStatus(bool status)
: Zeigt eine Meldung an, ob die ID verfügbar ist oder nicht.reloadConfig()
: Erneuert die HTTP-Header mit den aktuellen Anmeldeinformationen.getInformation()
: HTTP-GET-Aufrufen der Endpunkt /api/app der API und gibt die Antwort als Map<String, dynamic> zurück.deleteDevice(String clientId)
: HTTP-DELETE-Aufruf an die Endpunkt /api/{id} und löscht das Gerät in der Cloud