Flutter -- ohne Dart geht es nicht Futures

Futures

Um mehr über Dart zu erfahren gehe ich in diesem Post auf das Thema Futures ein. Warum ? Das Konzept ist gerade auch für Flutter wichtig und ermöglicht eigentlich erst grössere Projekte. Was steckt also hinter Futures ?

Nicht einfrieren


In einem Programm kann es sein, das ein Resultat nicht sofort verfügbar ist. Wenn wir zum Beispiel ein File auslesen, oder auf die Antwort einer Website warten. Es gibt nun die Möglichkeit zu warten, bis das Resultat vorliegt. Das heißt, das Programm friert ein bis wir die Operation abschließen können. Oder wir wählen eine asynchrone Programmierung, d.h. auf der einten Seite warten wir auf den Abschluss einer Operation, während an anderer Stelle das Programm weiter läuft. Beginnen wir mit einem Beispiel. In Visual Studio Code erstellen wir ein Dart CLI Projekt, löschen aber den Boiler Code.

Ein Beispiel


In diesem Beispiel importieren wir dart:io und dart:async. In Visual Studio Code haben wir im Vorfeld ein file.txt angelegt, mit ein paar Wörtern. Dieses möchten wir auslesen, also ermöglichen wir uns zuerst den Zugriff darauf mit File("file.txt");
Die Methode file.readAsString() gibt als Resultat ein Future zurück. 

Future, ein Type ?

In Dart kann man ein Future auch wie einen Daten Typ verstehen, wie String oder Int es ja auch sind. Das heisst wir müssen das retournierte Objekt auch dementsprechend behandeln. Als erster Schritt ändern wir den Typ von fileInhalt auf Future.
Mit fileInhalt.then bestimmen wir, was mit dem Resultat passiert, sobald wir es von der Printfunktion bekommen. In diesem Fall wird sie in die Konsole gedruckt.

Wenn man diesen Code ausführt, natürlich muss ein file.txt angelegt sein, wird zweiter satz als erstes auf dem Bildschirm ausgegeben, der Inhalt des Files danach.

Zum folge Post gehts hier lang !

Kommentare

Beliebte Posts aus diesem Blog

Material Design in Flutter Teil 2

Dart Basic: Listen Part 1

Listen in Dart (2021): Part 1 List.filled List.empty und List.add