Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
From 0 to production with Flutter in a month*
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Luca Nicoletti
November 30, 2024
59
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
More Decks by Luca Nicoletti
See All by Luca Nicoletti
Using Google Maps with Jetpack Compose
lnicolet
1
190
Using Google Maps with Jetpack Compose
lnicolet
0
250
Drawing on GoogleMaps with Jetpack Compose
lnicolet
0
220
Engineering a design system
lnicolet
0
730
Compose your TRILL
lnicolet
0
200
MVI with Jetpack Compose
lnicolet
1
510
Jetpack Compose: exploring a pre-alpha
lnicolet
0
320
MVI with Jetpack Compose
lnicolet
1
580
MVI with Jetpack Compose
lnicolet
2
270
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Claude Code のすすめ
schroneko
67
230k
Writing Fast Ruby
sferik
630
63k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Agile that works and the tools we love
rasmusluckow
331
22k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
Scaling GitHub
holman
464
140k
Are puppies a ranking factor?
jonoalderson
2
3.9k
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 🙏