Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
From 0 to production with Flutter in a month*
Search
Luca Nicoletti
November 30, 2024
0
8
From 0 to production with Flutter in a month*
Slides of my talk at DroidconItaly 2024: From 0 to production with Flutter in a month*
Luca Nicoletti
November 30, 2024
Tweet
Share
More Decks by Luca Nicoletti
See All by Luca Nicoletti
Using Google Maps with Jetpack Compose
lnicolet
1
45
Using Google Maps with Jetpack Compose
lnicolet
0
67
Drawing on GoogleMaps with Jetpack Compose
lnicolet
0
74
Engineering a design system
lnicolet
0
630
Compose your TRILL
lnicolet
0
140
MVI with Jetpack Compose
lnicolet
1
460
Jetpack Compose: exploring a pre-alpha
lnicolet
0
230
MVI with Jetpack Compose
lnicolet
1
520
MVI with Jetpack Compose
lnicolet
2
220
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
222
9k
4 Signs Your Business is Dying
shpigford
181
21k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Docker and Python
trallard
42
3.1k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
GraphQLとの向き合い方2022年版
quramy
44
13k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Agile that works and the tools we love
rasmusluckow
328
21k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Transcript
From 0 to production © Luca Nicoletti 2024 With Flutter
in a month*
Luca Nicoletti • Android Engineer ~7 years • Jetpack Compose
enthusiast • Youtuber (ish) • Into Multiplatform • Not only KMP 👋
How?
Chat GPT
Questions?
The timeline
The timeline 1 month development 03/05 27/05 First commit First
release
The timeline Weeks before 03/05 The wall 🧱 Coding 💻*
The switch 🔄
The timeline Months before Coding 💻 08/03 The idea 💡
The planning 📝 The design 🎨
The timeline Diamong painting
The timeline Diamong painting
The timeline Years before 2024 Coding job The idea 💡
2013 May - Jun 2017 } Flutter test*
The app 📱
The app 📱
The app 📱
The switch 🔄
The switch 🔄 Facing a wall 🧱 • Slow rendering
(with Jetpack Compose) • Would need a second project for the Native iOS • With 0-ish knowledge of the platform
The switch 🔄 Why not React? • Adversion through Js
• ReactNative uses native components • Would the rendering problem occur again?
The switch 🔄 Why not KMP? • Love for Kotlin
• Compose Multiplatform • Would face the same problem? • LocalDB? • Still too early?
Tools
Tools What I used • Visual Studio Code + Terminal
• Android Studio • Mac OS • iPhone • Emulators • Physical Android
Tools What I used
The development
The development Libraries • Navigation: `go_router` • Persistence: `provider` •
Storage: `shared_preferences` & `sq f lite` • Interactions: • Sounds: `soundpool` • Vibrations: ` f lutter_vibrate` • Upgrade dialog: `upgrader`
The development Libraries • Others • ` f irebase_analytics` •
` f irebase_crashlytics` • ` f irebase_database` • `cached_network_image` • ` f lutter_svg`
The development go_router
The development go_router
The development go_router
The development Provider
The development shared_preferences
The development shared_preferences
The development shared_preferences
The development sq f lite
The development sq f lite
The development sq f lite
The development Soundpool
The development Soundpool
The development f lutter_vibrate
The development Upgrader
The development Upgrader
The development Libraries • Image picker: `image_picker` • Image cropper:
`image_cropper`
The development image_picker
The development image_picker & image_cropper
The development image_cropper
The development image_cropper
The development image_cropper
The development image_cropper
The development Libraries • UI • Confetti: `confetti` • Intro:
`page_view_dot_indicator`, `carousel_slider` • Intro: `rotated_corner_decoration` • Capturing the Widget: `widgets_to_image` • Sharing the result: `share_plus`
The development widgets_to_image & share_plus
The development widgets_to_image & share_plus
The development confetti
The development confetti
The development rotated_corner_decoration
The development rotated_corner_decoration
The development rotated_corner_decoration
First feedbacks
First feedbacks What to improve • The timer gives anxiety
😥 • Haptic feedback 📳 • Sound 🔊 • Multiple games at the same time ♟👾🕹🎲
First feedbacks What to improve • Timer became collapsible
First feedbacks What to improve • Multiple games at the
same time ♟👾🕹🎲
Release!
Release Now what? Task iOS Android Setup Developer account ❌
✅ Pay the fees ❌ ✅ Generate release builds ❌ ✅ Beta release ✅ ❌ Promote the release ✅ ✅
Release Building them
Release Now what? Task iOS Android Setup Developer account 🟰
🟰 Pay the fees ❌ ✅ Generate release builds 🟰 🟰 Beta release ✅ ❌ Promote the release 🟰 🟰
Problems
Problems What went wrong • ChatGPT is ok, not good
• ZoomableWidget* • Apps size! • Users really notice that!
Problems ZoomableWidget
Problems ZoomableWidget
Problems ZoomableWidget
Problems ZoomableWidget
Problems ZoomableWidget
Problems Widget generation
Problems Widget generation ChatGPT VSCode plugin
Problems Widget generation
Problems What I did wrong • Simple approach (Provider 👀)
• Complexity kept adding • No structure
Problems Provider
Future
Future Would I use it again? • Yes • No
Future Would I use it again? • Yes • Framework
knowledge • Enjoyment of development • Multi-platform • Good support & libraries • No
Future Would I use it again? • Yes • No
• App size • Language lacks features • Lacking knowledge (Architecture, best practices, etc…)
The serious ones Questions?
Thank you! © Luca Nicoletti 2024 🙏