MVI Compose Multiplatform Contacts List App With Photos (iOS & Android) - KMM Tutorial

In this course you'll learn to build a fully working contacts list app for iOS & Android by using the new Compose Multiplatform for KMM projects. We'll make use of Material3 and dynamic colors, so you can stick to Google's design guidelines for your future apps as well.
⭐ Save 25% on ALL premium courses including the already discounted bundles (discount code SUMMER25):
pl-coding.com/premium-courses...
‼️ Sale ends on July 19th 2023 ‼️
Get my FREE PDF about 20 things you should never do in Jetpack Compose:
pl-coding.com/jetpack-compose...
Create your Material3 theme here:
m3.material.io/theme-builder#...
💻 Let me be your mentor and become an industry-ready Android developer in 10 weeks:
pl-coding.com/drop-table-ment...
Follow me on Instagram for insights into my live as an Android developer:
/ _philipplackner_
Get the initial source code for this video on GitHub:
github.com/philipplackner/Con...
Get the final source code here:
github.com/philipplackner/Con...
00:00 - Project Overview
12:03 - Creating the Material3 Theme
14:39 - Contact List UI
01:05:02 - SQL Setup & ContactDataSource
01:20:23 - ContactListViewModel
01:38:12 - DI Setup
01:45:55 - AddContactSheet Setup
02:05:42 - Picking Images
02:27:15 - Persistent Image Storage
02:47:57 - ContactDetailSheet Setup
03:01:16 - Recently Added Contacts
03:08:31 - Final notes

Пікірлер: 230

  • @PhilippLackner
    @PhilippLackner11 ай бұрын

    Save 25% on ALL my more advanced premium courses and bundles with the code SUMMER25: pl-coding.com/premium-courses Disclaimer 1: Apparently, I was just too dumb to find the Export button for the Material3 builder. You can just use that to export your M3 theme and don't need to copy-paste all colors 😂 Disclaimer 2: This is a simplified version of a contact list app. A real contact list app would also access the device's contacts (saved in the pre-installed contact list app for example). In Android this would work with the contact content provider. It was intentionally left out to not make this too long because this would be an additional implementation that differs on iOS and Android, but it's a good homework if you want to take this a step further 👍

  • @nymexe

    @nymexe

    11 ай бұрын

    Oh, you forgot to pin the comment)

  • @abiodunmoses2638

    @abiodunmoses2638

    11 ай бұрын

    Will this coupon on premium courses be valid until ending of the month?

  • @PhilippLackner

    @PhilippLackner

    11 ай бұрын

    @@abiodunmoses2638 no, 7 days

  • @JJ-fj6hl

    @JJ-fj6hl

    11 ай бұрын

    Does the discount apply to the course "Powerful REST APIs with Ktor"? I tried to use the code but it complains that it's invalid.

  • @yodgorbekkomilov3383

    @yodgorbekkomilov3383

    11 ай бұрын

    @@PhilippLackner please create test-driven development course with kotlin multi-platform all the best a great course danke

  • @chips056
    @chips05611 ай бұрын

    A free THREE hours course... Damn Philipp, you're truly the man!

  • @PhilippLackner

    @PhilippLackner

    11 ай бұрын

    Thanks a lot, happy learning!

  • @kinggeorges625
    @kinggeorges62511 ай бұрын

    Cool, I've been waiting for this for so loong. Thanks Philip

  • @mrhchan94
    @mrhchan9411 ай бұрын

    Thank you Phill for your dedication and hardwork.

  • @ma-ui8zz
    @ma-ui8zz11 ай бұрын

    It is so thoughtful of you to release such a valuable course for free on KZread, thanks a lot.

  • @ayoubBoumzebra
    @ayoubBoumzebra11 ай бұрын

    At 13:50 actually, you can export the color themes from the top *export* button in the menu. Thanks for the video.

  • @akashkumardas6521
    @akashkumardas652111 ай бұрын

    This is really what everyone wants from you. Thank you

  • @MtaufiqH731
    @MtaufiqH73111 ай бұрын

    This is truely amazing! God bless you!

  • @kunjeshvirani
    @kunjeshvirani11 ай бұрын

    Finally, the most awaited video came. Thank you 3000 times.

  • @nedeljkobabic1651
    @nedeljkobabic165111 ай бұрын

    I started watching your kotlin coroutines playlist, and after some time I went to see your channel, and I was so happy when I saw that you are still creating tutorials about kotlin, keep up the great work!

  • @KingFuYouTube
    @KingFuYouTube11 ай бұрын

    Damn this is insane.... 3 hours video. Thank you for the tutorials. Also, I am looking forward to using KMM soon. 😊

  • @AhmadBakdash07
    @AhmadBakdash0711 ай бұрын

    13:30 You can get the colours and themes as an XML file by pressing on the export button in the top right corner.

  • @saurabhsharma-om1rc

    @saurabhsharma-om1rc

    11 ай бұрын

    Thanks got to know after seeing your comment, and there is also an option to export for compose as well. That downloads Color.kt & Theme.kt

  • @patrickadutwum5480
    @patrickadutwum548011 ай бұрын

    Thanks for making this incredible course for free, happy to learn

  • @speedrocketstudios5168
    @speedrocketstudios51689 ай бұрын

    Dude this is so incredibly helpful. Great for learning KMM and Compose multiplatform but also a wonderful resourse for seeing clean architecture applied in practice, as you work. Just watching this has helped me understand so many foundational software concepts much better. THANK YOU

  • @ernestguevara5968
    @ernestguevara596811 ай бұрын

    Wow, saved this vid. Will do this when I have a free time. Thanks man!!!

  • @ajithma4091
    @ajithma409111 ай бұрын

    Thank you so much for this video. I will go through this tomorrow and try to build an app and see how well it goes.

  • @treasuretechnology1724
    @treasuretechnology172411 ай бұрын

    Thank you Very Much, lots of love from Kenya

  • @idriscoding
    @idriscoding11 ай бұрын

    Three hours of free training, you are great🚀

  • @NiMa-1629
    @NiMa-162911 ай бұрын

    This looks awesome, thanks!

  • @alexnovikov1609
    @alexnovikov160911 ай бұрын

    It is just in time! Thank you very much, Philipp!

  • @veda1015
    @veda101511 ай бұрын

    Thankyou man for this awesome video

  • @ThomasPhillips3
    @ThomasPhillips311 ай бұрын

    +1 to all the positive comments here. I've been an "aspiring" Android developer for way too long. You definitely are helping take me to the next level! Thank you so much!

  • @DavidSantiagoIriarteZamora
    @DavidSantiagoIriarteZamora11 ай бұрын

    Awesome, thank you very much !

  • 11 ай бұрын

    Philipp you are AMAZING! 🙌

  • @icodethis
    @icodethis11 ай бұрын

    The best video in the world has arrived.

  • @creponnekarim2865
    @creponnekarim286511 ай бұрын

    You're a hero buddy you're so amazing You made me land my first freelance job So thank you from The bottom of my heart

  • @Sidner77
    @Sidner7711 ай бұрын

    This is very cool. Thank you!

  • @UsamaThakurr
    @UsamaThakurr11 ай бұрын

    This is what I wanted ❤

  • @riyupapa39
    @riyupapa3911 ай бұрын

    This is amazing video!!!. Thank you Philipp!! I hope Compose Multiplatform( with KMM ) will be popular ~

  • @divyanshdxn
    @divyanshdxn4 ай бұрын

    Finally completed the course this weekend. Really awwesome, now I'm going to migrate my wallpaper app project to compose MP 🎉🎉

  • @haseeb776
    @haseeb77610 ай бұрын

    Your passion for KMM is awe-inspiring, and your tutorial is a game-changer for aspiring developers. Kudos to your hard work and dedication! 👏👍

  • @mahadsaid7175
    @mahadsaid717511 ай бұрын

    i like the KMM projects you make, they are very detailed

  • @fazalulabid8483
    @fazalulabid848311 ай бұрын

    Thank You Philipp😍

  • @azatsabirov863
    @azatsabirov8638 ай бұрын

    Thanks for such amazing video!

  • @tikayz
    @tikayz11 ай бұрын

    Thanks Phillip Your contents are very details and you explain every step to our understanding. Bless you mentor Hope to purchase your advanced courses soon 🎉 Lots of love from Ghana 🇬🇭

  • @i_youtube_
    @i_youtube_10 ай бұрын

    Thank Philipp you for this free course.

  • @mytubekt
    @mytubekt10 ай бұрын

    Yes all serious developers watch till the end ;) Great video! Thanks for sharing!

  • @mohameddouch9503
    @mohameddouch950311 ай бұрын

    13:40 you can export the colors using the button "export" in the top right

  • @user-sl8jw9cc5b
    @user-sl8jw9cc5b11 ай бұрын

    It's awesome!!!!

  • @ericwathome783
    @ericwathome78311 ай бұрын

    Thank you for this Video. You can download the color codes. There's a download button at the top that allows you to download different formats e.g jetpack compose or XML

  • @anoopkumarueconomicsa8462
    @anoopkumarueconomicsa846211 ай бұрын

    You are amazing, l just started learning compose multiplatform yesterday. Just found this video, amazing. Keep going.

  • @PhilippLackner

    @PhilippLackner

    11 ай бұрын

    Enjoy!

  • @Snoootz
    @Snoootz11 ай бұрын

    AWESOME!

  • @lanesOfCode
    @lanesOfCode11 ай бұрын

    let me jump straight into it, thanks.

  • @skarloti
    @skarloti11 ай бұрын

    In your hands, you make the Kotlin language much more powerful than other languages ​​by demonstrating its power in multiplatformity. Through WebAssembly, will become even stronger in the next few months. Along with the sensational Generarive AI, I started looking for other applications as well. I will be interested in your implementation Tensorflow Lite and demonstrate some trained model graphically. There are already many ViT Transformers too. Thank you so much for this wonderful video tutorial that you are giving away absolutely free!

  • @giuliopimenoff
    @giuliopimenoff11 ай бұрын

    This is amazing :>

  • @aiklklivlind9451
    @aiklklivlind945111 ай бұрын

    Phillip always make a great content, thank you bro, you are making programming world better

  • @davebudah
    @davebudah11 ай бұрын

    Thank you so much

  • @nastenkaoo
    @nastenkaoo11 ай бұрын

    you are perfect guy

  • @garrisonsnow7776
    @garrisonsnow777611 ай бұрын

    Thanks for giving back 👍

  • @UpLiftingU007
    @UpLiftingU00711 ай бұрын

    just amazing 🙏

  • @rhobpaz4577
    @rhobpaz457711 ай бұрын

    Thanks for making it available for free specially for latin-american people who would not be able to afford it otherwise, god bless Philipp!

  • @apl4s
    @apl4s11 ай бұрын

    First leaving a like, then watching the video. Simply a free three-hour video that someone can use to expand their career in every way. Stupid who doesn't take advantage of it.

  • @aksharshah
    @aksharshah11 ай бұрын

    You are amazing...😊

  • @danielhaslinger9266
    @danielhaslinger926611 ай бұрын

    Thank you for making this video! It couldn't have come at a better time because I'm currently super passionate about learning KMM. Seriously, your content is always top-notch and extremely valuable! I've gained an immense amount of knowledge from your premium courses and mentorship. Your feedback is always spot-on and incredibly helpful. If anyone wants to become an amazing Android developer, they absolutely can't go wrong with learning from you. Keep up the fantastic work, Philipp! Your videos truly make a difference, and I'm so grateful for all the knowledge you generously share.

  • @PhilippLackner

    @PhilippLackner

    11 ай бұрын

    Thanks so much Daniel, looking forward to more work with you 🙌

  • @EusouGabrielChen
    @EusouGabrielChen5 ай бұрын

    Amazing!

  • @Landofcoding
    @Landofcoding11 ай бұрын

    Amazing

  • @lindaporsius
    @lindaporsius11 ай бұрын

    You are my hero ❤

  • @TheZaurHasanov
    @TheZaurHasanov11 ай бұрын

    thanks 👍🏻❤️

  • @coalacorey
    @coalacorey11 ай бұрын

    Wow, I've been looking for exactly this type of video! I'm looking to turn an Android app into a KMM one as I get a lot of requests for an iOS version.

  • @PhilippLackner

    @PhilippLackner

    11 ай бұрын

    Enjoy!

  • @RAJSINGH-mr7hq
    @RAJSINGH-mr7hq11 ай бұрын

    You are awesome 👌 👏

  • @nomugop8017
    @nomugop801711 ай бұрын

    omg! God bless you

  • @SaherAlSous-welcomes-you
    @SaherAlSous-welcomes-you10 ай бұрын

    Thank you Philipp...

  • @rhythamnegi
    @rhythamnegi11 ай бұрын

    I love to learn about KMM , this SUNDAY i will complete

  • @dzartxstudio
    @dzartxstudio11 ай бұрын

    We all gonna remember your name , thank you ❤

  • @innocentkumwenda8139
    @innocentkumwenda813911 ай бұрын

    Thanks Philipp

  • @Alexmez
    @Alexmez5 ай бұрын

    Great video 🎉

  • @vladk3524
    @vladk352410 ай бұрын

    Thank you

  • @user-nd5yd7fe5h
    @user-nd5yd7fe5h6 ай бұрын

    Thx!

  • @krisztianbotos168
    @krisztianbotos16811 ай бұрын

    Hey Philipp, the theme builder page allows to export the color theme written in Kotlin by clicking the export button in the top right corner.

  • @misakidebugged
    @misakidebugged11 ай бұрын

    I absolutely appreciate this!! I've been thinking of using Dart (Flutter) but going away from Kotlin was bumming me out

  • @vibovitold

    @vibovitold

    11 ай бұрын

    Yeah, Dart isn't nearly as nice as a language (somewhere between Java and Kotlin I'd say, yet still closer to Java), and now that we've got Jetpack Compose I feel like Flutter lost its main relative advantage (in-code declarative layouts and associated state management)

  • @easybusinessou
    @easybusinessou11 ай бұрын

    Great 👍👍👍

  • @MaisUmSomente
    @MaisUmSomente9 ай бұрын

    Unbelieveble.

  • @trocchiettoski
    @trocchiettoski11 ай бұрын

    Philip I am not doing unfortunately android development anymore but I follow your video because you are an exceptional person thank you for your awesome effort and to make it free

  • @jayantkumar1954
    @jayantkumar195411 ай бұрын

    Wow ❤❤❤❤

  • @kishansinhparmar
    @kishansinhparmar10 ай бұрын

    Thankyou

  • @WansaIndika
    @WansaIndika7 ай бұрын

    Legend

  • @irhasm.a.4932
    @irhasm.a.49329 ай бұрын

    great😍

  • @world_music_lyrics4416
    @world_music_lyrics441610 ай бұрын

    which shortcat do you use for creating new kotlin class on mac? CMD+N not directly creating class on mac

  • @saddam_howladar77
    @saddam_howladar7711 ай бұрын

    Great course thank you ❤❤ i think its better to use Circuit A Compose-driven architecture for Kotlin can you at least make a crash course about circuit please it will be very helpful 🙏🙏

  • @jcolindres001
    @jcolindres00111 ай бұрын

    Hello Phillip, Excellent course. Question: will always be necessary to use swift to code the iOS part? or is there a plan from Kotlin (to code the iOS part from native Kotlin) as well. Thanks,

  • @d_o_o_m_g_u_y
    @d_o_o_m_g_u_y11 ай бұрын

    Week 3 of learning compose. This looks good, and am doing it. God help me

  • @ThomasPonzo
    @ThomasPonzo5 ай бұрын

    with the expect class you can now generate the actual class for you if you alt enter on the classname

  • @JorgeCastro-sb3ss
    @JorgeCastro-sb3ss11 ай бұрын

    @PhilippLackner First of all, I thank you because the content you share is impressive. Is it possible to navigate back in the view stack by swiping like natively? In all the Compose Multiplatform examples I've seen so far, it's always done through the action of an icon or button.

  • @ajayhatte6510
    @ajayhatte651010 ай бұрын

    Hi philipp, Thanks for this video on Compose multiplatform.Can you please share from where you get resources or references for compose multiplatform for e.g. platform specific implementation for ImagePicker ?

  • @BrunoMilhan
    @BrunoMilhan11 ай бұрын

    Great video Philipp, thanks for sharing with us. I’ve been waiting for a long time a vídeo about kmm from you, because i know you use most modern techniques and a clean close approach, and after I watch this video I continue considering that still not worth it. I think that isn’t a good idea not to use android libraries like hilt or room, to use something else just to make a code shareable. I’m really passionate about kotlin, and I dream with kmm for a long time but I think that is not the moment yet. Now, kmm is adding more complexity in both projects instead of make it more easy to understand for both developers, android and ios. I think Flutter continues to be the the best option now, even though it’s another approach and you need to use dart(the worst language….). thanks for sharing your experience. =)

  • @PhilippLackner

    @PhilippLackner

    11 ай бұрын

    Compose Multiplatform is now pretty much flutter with kotlin + making it easier to write native specific code, so I don't see how that argument counts 😄

  • @bhushank1234
    @bhushank12344 ай бұрын

    Philipp, this course was awesome. The hands of session really helped me get good knowledge. Really appreciate. Now the KMM has official version is out, what is your opinion on its performance on iOS platform. Does it match or comes close to the native iOS app performance. Please let me know your view?

  • @animecontent232
    @animecontent23211 ай бұрын

    I love you more than myself ❤

  • @mounirboussetta
    @mounirboussetta10 ай бұрын

    You don't need to copy each color code, you do have the option to download all colors codes from the top right dropdown menu (export).

  • @muckalica96
    @muckalica9612 күн бұрын

    Awesome video, thanks! I'm also wondering is it possible to send ImagePicker parameter from the App to a certain Voyager screen and if so, how? Best regards!

  • @yuuzuX
    @yuuzuX10 ай бұрын

    Using Precompose can also make managing ViewModel easier.

  • @nymexe
    @nymexe11 ай бұрын

    13:35 There was a button in the top right corner to export the material colors)

  • @vilmarcabanero2500
    @vilmarcabanero250011 ай бұрын

    ❤❤❤

  • @jopadjr
    @jopadjr11 ай бұрын

    116th...Thanks Philipp

  • @mitulsheth
    @mitulsheth11 ай бұрын

    Thank you @philip

  • @ericstefan5700
    @ericstefan570011 ай бұрын

    Do one for Desktop!

  • @shoprecartteam9567
    @shoprecartteam956711 ай бұрын

    Please make a video on theme customization, Changing the background color of IconButton and shape and NavigationBarItem. There is no topic out there.

  • @tmjromao
    @tmjromao11 ай бұрын

    Many thanks for sharing your knowledge. One question regarding the project, why haven't you use Moko for sharing resources? it would help if on top of the video you have used what you explained before. Hard to keep up with all the libraries around, setting up KMM project files. Any how, great content. Best regards

  • @PhilippLackner

    @PhilippLackner

    11 ай бұрын

    That would've involved too much setup, the video is already 3h+ long

  • @peppefailla1630
    @peppefailla163010 ай бұрын

    You're turning my life upside down man

  • @ChrisAthanas

    @ChrisAthanas

    8 ай бұрын

    no one can keep up with the marathon man

  • @scottmiddleton143979
    @scottmiddleton14397911 ай бұрын

    Havent had chace to watch this all theough yet but wondering if Philipp handles any errors in this? Can you display a Toast or Snackbar on iOS in compose multiplatform??

  • @Hasan-ed1fz
    @Hasan-ed1fz10 ай бұрын

    There is an option to export the colors as "jetpack compose theme" on the export section of the material theme website.