Am Puls von Microsoft

Wir basteln uns mit Googles Flutter einen etwas anderen RSS Reader für das Surface Duo

Wir basteln uns mit Googles Flutter einen etwas anderen RSS Reader für das Surface Duo

Wir basteln uns auf einem Apple M1 Mac mini eine kleine Google Flutter App für das Surface Duo von Microsoft. Es sind schon kuriose Zeiten, in denen wir leben. Genau diese Möglichkeit, sich seinen Werkzeugkasten so zusammenzubauen, wie man diesen am liebsten hat, ist das Besondere am „neuen“ Microsoft. Es gibt keine Ausgrenzung von konkurrierenden Plattformen mehr und jeder kann das nutzen, was er oder sie denn möchte. Wenn das nicht tolle Aussichten für Bastelprojekte sind!

Was basteln wir?

Wir basteln uns eine kleine Surface Duo App, welche uns RSS-Feeds in einem etwas anderen Stil lesen lässt. Das Beispielprogramm soll etwas an einen E-Book Reader erinnern. Die App soll nicht nur auf einem Dual Screen Gerät arbeiten, sondern auch auf “normalen” Geräten sowie im Single Screen Modus des Surface Duo gut aussehen. Somit muss die App drei verschiedene Layouts unterstützen.

Wie immer bei unseren Bastelprojekten sei angemerkt, hier steht weder ein „finales“ Produkt noch Perfektionismus auf unserer Agenda, sondern rein der Spaß an der Softwareentwicklung. Zu finden ist der Quelltext im entsprechenden Repository auf GitHub.

Wieso nicht Xamarin.Forms?

In unseren letzten Basteleien haben wir großteils Microsofts Softwareökosystem benutzt. Sei es Xamarin.Forms für unsere „Road to Surface Duo“ (#rTsd) App oder ASP.NET Core für beispielsweise unser Stream Overlay.

Dieser Beitrag geht eine andere Richtung. Denn in diesem Artikel hier auf Dr. Windows entwickeln wir zum ersten Mal nicht mit beziehungsweise für eine Microsoft Software, sondern für eine Hardware aus Redmond.

Weiter ist gerade im .NET-Land sehr viel Trouble und Umtriebigkeit spürbar. Denn der neue Stern .NET 6 und auch .NET MAUI stehen vor der Tür. Ich möchte mich erst wieder in meiner Freizeit auf .NET und auch C# Sachen stürzen, wenn wieder mehr Ruhe in diesen Gefilden eingekehrt ist und Tutorials sowie Dokumentationen ohne großes Versionsgesuche schlussendlich wieder benutzbar werden. Ist dies geschehen, geht es auch liebend gern mit unserem Entwicklertagebuch für die #rTsd App weiter.

Wie, wo, was ist Flutter?

Hierüber könnte man einen komplett eigenen Beitrag schreiben. Wer mehr als nur den folgenden kurzen Exkurs über Flutter wissen möchte, dem empfehle ich die Deep Dive Videos  zu Flutter direkt vom Product Team auf YouTube.

In Kürze: Flutter ist Googles Versuch, plattformunabhängig Applikationen zu entwickeln. Anders als bei Xamarin.Forms stehen hier auch Web- und Desktop-Systeme von Haus aus als unterstützte Zielplattformen direkt fest. Hierbei schreibt man die eigentliche Logik des Programmes und die Oberfläche in der gleichen Sprache. Vergleichbar mit SwiftUI von Apple oder Jetpack Compose von Google. Das Buzzword hierfür lautet “Declarative UI”.

Anders als beispielsweise Xamarin nutzt Flutter keinerlei native Elemente im Hintergrund, sondern zeichnet sprichwörtlich die Oberfläche Pixel für Pixel auf eure Bildschirme. Dies hat  sowohl Vor- als auch Nachteile, wo jeder Entwickler für sich selbst entscheiden muss, welchen Weg er/sie gehen möchte.

Flutter an sich ist nur ein Framework, also genau wie Xamarin.Forms, allerdings nutzt Flutter nicht eine verbreitete Programmiersprache unter der Haube wie Xamarin mit C#, sondern setzt auf eine ebenfalls von Google geschaffene Sprache namens Dart.

Surface Duo Flutter App Android Studio

Getreu dem von mir oben erwähnten neuen Motto von Microsoft, beteiligen sich die Redmonder aktiv an der Weiterentwicklung von Flutter. So stammt der bald verfügbare Foldable Support zu großen Teilen aus dem Hause Microsoft, Dr. Windows berichtete. Dies spürt man auch in den Entwicklerblogs für das Surface Duo. Neben einen allgemeinen „Getting started“-Beitrag gibt es hier tiefgreifende Informationen, wie man mit Flutter für das Surface Duo entwickeln kann.

Auch was die Auswahl an offiziell unterstützen Entwicklungsumgebungen und Editoren betrifft mischt Microsoft mit Visual Studio Code bei Flutter ganz vorn mit. Da ich persönlich IntelliJ sehr schätze, nutze ich Android Studio. Die IDE lief selbst als noch nicht angepasste x86-Version absturzfrei auf meinem ARM-Mac. Überlegt einmal, was das für Windows on ARM bedeuten könnte. Träumen darf man ja noch, oder?

Die Herausforderungen

Bei dieser App ist alles neu für mich. Android, Flutter und mehrere Bildschirme. All dies sorgte für ein Potpourri an Herausforderungen, welche mal mehr, mal weniger erfolgreich gemeistert wurden. Zeitgleich hat Flutter einen großen Sprung auf Version zwei erlebt, welche etliche neue Features und Möglichkeiten eröffnet. Allerdings musste man sich dieser erst einmal klar werden. Da ich bei meiner RSS Book App nicht wie in meinem ersten Flutter-Minimalbeispiel für das Surface Duo den offiziellen Microsoft Weg mit SDK-Kopiererei und Kotlin Quelltext gehen wollte, entschied ich mich für ein Plugin Dritter. Dieses funktioniert, wie es soll, nur unterstützt dies noch nicht alle Features von Flutter 2. Dies wiederrum brauchte das Build-Werkzeug Gradle durcheinander und schlussendlich stand ich vor einem Salat von nichtssagenden Fehlermeldungen und einem heillos überforderten Tobi. Nach etlichen git reset –hard Befehlen konnte ich es zu mindestens so bändigen, dass es das macht, was ich wollte, auch wenn ich wie schon beschrieben auf manche Flutter 2 Funktionalitäten wie „nullable“ verzichten muss. Für einen unerfahrenen Dart Bastler wie mich war dies der beste Trade-Off. Man kann nichts vermissen, was man nicht (in Dart) kennt.

Ansonsten war es wirklich toll zu sehen, was man an einem verregneten Nachmittag heutzutage alles erreichen kann. An all unseren Bastelprojekten hier auf Dr. Windows ist mir immer wichtig, dass man spätestens nach einem Wochenende Resultate sieht, welche einen motivieren, eventuell auch am kommenden Wochenende daran weiterzuarbeiten. Dieses Gefühl hat mir die Kombination aus Flutter und dem Surface Duo schlussendlich doch beschert.

Beispiel

Im verlinkten Video seht ihr die RSS Book App in Aktion. Links die Listenansicht aller Feeds und deren Beiträge sowie rechts die Detailansicht. Bei einem Gerät mit nur einem Bildschirm oder bei einem Surface Duo, was nicht aufgeklappt ist, wird hier ein Navigationssprung zwischengeschaltet.

Fazit: Es war ein spaßiges Proof-Of-Concept

Alles in allem kann ich sagen, es war ein spaßiges Proof-Of-Concept, bei welchem ich viel gelernt habe und nachdem ich nun meine traditionellen Programmiersprachen Swift und C# wieder mehr zu schätzen weiß.

Es ist schön zu sehen, wie offen Microsoft nunmehr geworden ist und wohin die Reise modernen Sprachen und Frameworks zur Erstellung von Programmen, welche plattformagnostisch sind, hinführen kann. Ich hoffe, dass hier Microsoft mit MAUI und Co. nachlegen kann. Denn vor allem wenn es um das „Rumprobieren“ mit Oberflächen geht, ist Flutter dank seinem Hot-Reload und sehr schlanken Code-Unterbau wirklich etwas Schönes. Konventionelle Xamarin.Forms Anwendungen wirken dagegen sehr aufgebläht. In kommerziellen Projekten würde ich dennoch erst noch eine Biege sowohl um Flutter als auch das Surface Duo machen. Allein schon, weil bisher nicht klar genug ist, dass sich dieser Invest an Zeit – und Zeit ist Geld – schlussendlich rentiert. Sowohl Microsoft als auch Google haben das Image,  des Öfteren eigene Technologien (zu) schnell wieder einzustampfen.

Für private Projekte oder eben für das schnelle Prototyping werde ich wohl dennoch in Zukunft nun öfter zu Flutter greifen.

Über den Autor

Tobias Scholze

Tobias Scholze

Bayrischer Open Source- und Community-Enthusiast, Verfechter des neuen Microsoft und Wandler zwischen den Betriebssystemwelten. #communityrocks Von Herzen ein Nerd mit der festen Überzeugung, dass man gemeinsam und durch den Einsatz von moderner IT die Welt für jeden ein Stückchen besser machen kann.

Anzeige