Циљ и исход предмета
Усвајање теоретског знања и практичних вештина потребних за креирање мултиплатформских апликација коришћењем Flutter framework-а и Dart програмског језика. Студент разуме архитектуру Flutter-а и способан је да самостално развија апликације које из једне кодне базе циљају Android, iOS, web и desktop платформе (Windows, macOS, Linux), као и embedded уређаје попут паметних сатова, телевизора и инфотејнмент система у аутомобилима.
Теоријска настава
Увод у мултиплатформски развој и поређење са native приступом, осврт на алтернативне технологије (React Native, Kotlin Multiplatform, .NET MAUI). Историја, архитектура и интерни рад Flutter-а, Skia и Impeller графички engine, render pipeline. Основе Dart програмског језика — типови података, null safety, асинхроно програмирање (Future, Stream, async/await), Isolates. Упознавање са развојним окружењем (Flutter SDK, Android Studio, VS Code, DevTools). Анатомија Flutter пројекта, pubspec.yaml фајл и pub.dev екосистем пакета. Концепт widget-а као основне градивне јединице, разлика између stateless и stateful widget-а, widget/element/render tree. Material Design и Cupertino widget библиотеке. Layout widgets (Row, Column, Stack, Container, Expanded, Flexible, Wrap, GridView, ListView). Навигација и routing (Navigator 1.0 и 2.0, go_router, deep linking). Управљање стањем апликације (setState, InheritedWidget, Provider, Riverpod, BLoC). Комуникација са RESTful и GraphQL веб сервисима коришћењем http и dio библиотека. Перзистенција података (SharedPreferences, Hive, sqflite, Drift, secure storage). Анимације (implicit, explicit, Hero, Rive). Платформа Firebase у Flutter контексту — Authentication, Firestore, Cloud Functions, Cloud Messaging, Crashlytics. Platform channels и интеграција са native Kotlin/Swift кодом када платформа захтева функционалност недоступну у Flutter-у. Responsive и adaptive дизајн за различите форм-факторе, од сата до телевизора. Локализација и приступачност (accessibility). Тестирање апликација (unit, widget, integration тестови). Процес build-а, потписивања и постављања апликације на Google Play, App Store и web hosting. Преглед корисних ресурса за даље усавршавање.
Практична настава
Инсталација Flutter SDK-а и подешавање развојног окружења. Креирање првог Flutter пројекта, упознавање са структуром фолдера и pub менаџером пакета. Израда графичког корисничког интерфејса коришћењем различитих layout widget-а и обрада корисничких догађаја. Развој вишеекранских апликација са навигацијом и преносом параметара између екрана. Имплементација state management решења на конкретним примерима (Provider и BLoC). Израда апликација које комуницирају са REST API-јима и приказују веће скупове података уз lazy loading. Локално чување података коришћењем Hive и sqflite библиотека. Интеграција Firebase сервиса — аутентификација корисника, real-time база података и push нотификације. Креирање анимација и custom widget-а. Прилагођавање једне исте апликације за више форм-фактора (телефон, таблет, web, desktop, телевизор, ауто). Писање тестова и употреба DevTools-а за дебаговање и профајлинг. Build за Android, iOS, web и desktop, потписивање и постављање апликације у продукцију.