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
19
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
85
Using Google Maps with Jetpack Compose
lnicolet
0
140
Drawing on GoogleMaps with Jetpack Compose
lnicolet
0
130
Engineering a design system
lnicolet
0
680
Compose your TRILL
lnicolet
0
160
MVI with Jetpack Compose
lnicolet
1
480
Jetpack Compose: exploring a pre-alpha
lnicolet
0
250
MVI with Jetpack Compose
lnicolet
1
550
MVI with Jetpack Compose
lnicolet
2
240
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Building Adaptive Systems
keathley
43
2.6k
Balancing Empowerment & Direction
lara
1
390
Bash Introduction
62gerente
614
210k
Testing 201, or: Great Expectations
jmmastey
42
7.6k
A better future with KSS
kneath
239
17k
GraphQLとの向き合い方2022年版
quramy
49
14k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Writing Fast Ruby
sferik
628
62k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.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 🙏