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
11
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
58
Using Google Maps with Jetpack Compose
lnicolet
0
94
Drawing on GoogleMaps with Jetpack Compose
lnicolet
0
99
Engineering a design system
lnicolet
0
650
Compose your TRILL
lnicolet
0
150
MVI with Jetpack Compose
lnicolet
1
470
Jetpack Compose: exploring a pre-alpha
lnicolet
0
240
MVI with Jetpack Compose
lnicolet
1
540
MVI with Jetpack Compose
lnicolet
2
230
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The Cult of Friendly URLs
andyhume
78
6.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
GitHub's CSS Performance
jonrohan
1030
460k
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 🙏