Cilj i ishod predmeta
Usvajanje teoretskog znanja i praktičnih veština potrebnih za kreiranje multiplatformskih aplikacija korišćenjem Flutter framework-a i Dart programskog jezika. Student razume arhitekturu Flutter-a i sposoban je da samostalno razvija aplikacije koje iz jedne kodne baze ciljaju Android, iOS, web i desktop platforme (Windows, macOS, Linux), kao i embedded uređaje poput pametnih satova, televizora i infotejnment sistema u automobilima.
Teorijska nastava
Uvod u multiplatformski razvoj i poređenje sa native pristupom, osvrt na alternativne tehnologije (React Native, Kotlin Multiplatform, .NET MAUI). Istorija, arhitektura i interni rad Flutter-a, Skia i Impeller grafički engine, render pipeline. Osnove Dart programskog jezika — tipovi podataka, null safety, asinhrono programiranje (Future, Stream, async/await), Isolates. Upoznavanje sa razvojnim okruženjem (Flutter SDK, Android Studio, VS Code, DevTools). Anatomija Flutter projekta, pubspec.yaml fajl i pub.dev ekosistem paketa. Koncept widget-a kao osnovne gradivne jedinice, razlika između stateless i stateful widget-a, widget/element/render tree. Material Design i Cupertino widget biblioteke. Layout widgets (Row, Column, Stack, Container, Expanded, Flexible, Wrap, GridView, ListView). Navigacija i routing (Navigator 1.0 i 2.0, go_router, deep linking). Upravljanje stanjem aplikacije (setState, InheritedWidget, Provider, Riverpod, BLoC). Komunikacija sa RESTful i GraphQL veb servisima korišćenjem http i dio biblioteka. Perzistencija podataka (SharedPreferences, Hive, sqflite, Drift, secure storage). Animacije (implicit, explicit, Hero, Rive). Platforma Firebase u Flutter kontekstu — Authentication, Firestore, Cloud Functions, Cloud Messaging, Crashlytics. Platform channels i integracija sa native Kotlin/Swift kodom kada platforma zahteva funkcionalnost nedostupnu u Flutter-u. Responsive i adaptive dizajn za različite form-faktore, od sata do televizora. Lokalizacija i pristupačnost (accessibility). Testiranje aplikacija (unit, widget, integration testovi). Proces build-a, potpisivanja i postavljanja aplikacije na Google Play, App Store i web hosting. Pregled korisnih resursa za dalje usavršavanje.
Praktična nastava
Instalacija Flutter SDK-a i podešavanje razvojnog okruženja. Kreiranje prvog Flutter projekta, upoznavanje sa strukturom foldera i pub menadžerom paketa. Izrada grafičkog korisničkog interfejsa korišćenjem različitih layout widget-a i obrada korisničkih događaja. Razvoj višeekranskih aplikacija sa navigacijom i prenosom parametara između ekrana. Implementacija state management rešenja na konkretnim primerima (Provider i BLoC). Izrada aplikacija koje komuniciraju sa REST API-jima i prikazuju veće skupove podataka uz lazy loading. Lokalno čuvanje podataka korišćenjem Hive i sqflite biblioteka. Integracija Firebase servisa — autentifikacija korisnika, real-time baza podataka i push notifikacije. Kreiranje animacija i custom widget-a. Prilagođavanje jedne iste aplikacije za više form-faktora (telefon, tablet, web, desktop, televizor, auto). Pisanje testova i upotreba DevTools-a za debagovanje i profajling. Build za Android, iOS, web i desktop, potpisivanje i postavljanje aplikacije u produkciju.