Type-Safe Navigation with the OFFICIAL Compose Navigation Library

Ғылым және технология

In this video I'll show you the Type-Safe Navigation with the OFFICIAL Compose Navigation Library!
💻 Let me be your mentor and become an industry-ready Android developer in 10 weeks:
pl-coding.com/drop-table-ment...
⭐ Courses with real-life practices
⭐ Save countless hours of time
⭐ 100% money back guarantee for 30 days
⭐ Become a professional Android developer now:
pl-coding.com/premium-courses...
Get my FREE PDF about 20 things you should never do in Jetpack Compose:
pl-coding.com/jetpack-compose...
Regular programming advice on my Instagram page: / _philipplackner_
Join my Discord server:
/ discord
Get the source code for this video on GitHub:
github.com/philipplackner/Typ...

Пікірлер: 206

  • @sosaucemp3
    @sosaucemp3Ай бұрын

    7:17 He sounds so happy about it 😭

  • @WakeupDev.

    @WakeupDev.

    Ай бұрын

    yea... I felt that in his voice 😄

  • @farfar5828

    @farfar5828

    Ай бұрын

    😂😂 I felt that too

  • @KevinMeneses

    @KevinMeneses

    Ай бұрын

    X3

  • @BSS_00

    @BSS_00

    Ай бұрын

    its like every developer after a new good feature

  • @wame-bs7250

    @wame-bs7250

    23 күн бұрын

    Cause this feature reduces hundreds of lines of boilerplate parsing arguments, ensuring they're not null, etc...

  • @Shengdanya
    @ShengdanyaАй бұрын

    Yes. Yes. Yes. Omg. Tears of joy. Really needed a new way!!!!!

  • @ayitinya
    @ayitinyaАй бұрын

    This is actually the best news in android i've heard in a really long while

  • @nanonkay5669
    @nanonkay566913 күн бұрын

    2 reasons why I started and stopped Android dev within a year: 1. Lack of a package manager that handles all package installations, they're dependencies and versions without having to manually do it every time and manually tweaking package and dependency versions 2. Navigation between screens The second one seems to be solved. If the first one gets solved, I'd be back to Android dev in a heartbeat

  • @annaberkovitch85
    @annaberkovitch85Ай бұрын

    Philipp, I've no words!!!! Thank you for brightening my day! But mostly thank you for the truly TREMENDOUS amount of work you're doing to bring all those updates to us in a manner that's both timely and incredibly clear. Just... Thank you!!!!

  • @PhilippLackner

    @PhilippLackner

    Ай бұрын

    🙌❤️

  • @Jessewb786
    @Jessewb786Ай бұрын

    I was using Circuit and it's own navigation, so I've been making use of type-safe screens with painless parcelable arguments for quite a while. It's nice to now see this present in the official library.

  • @rishabhsaraswat1928
    @rishabhsaraswat1928Ай бұрын

    4:03 we can clearly see his happiness.

  • @amit470
    @amit470Ай бұрын

    Such a relief, I need this to be in compose stable

  • @magedahmed5981
    @magedahmed5981Ай бұрын

    Finally .. a simple straight routing .. 😊

  • @worthex_2
    @worthex_2Ай бұрын

    Omg this feels much more satisfying to do nagivation straight with classes now. Beautiful update.

  • @supadeurali9848
    @supadeurali9848Ай бұрын

    Wow wow wow.... tears in my eyes as well. So excited to try this.

  • @MatthewSmith-mt3kz
    @MatthewSmith-mt3kzАй бұрын

    The demo is a pretty simplistic, but a good intro into the new Nav feature. In the real world you'd be getting the screen argument from savedstatehandle. Keep up the good work Phillipp, your videos have saved me hours. Thank you.

  • @geanbrandao4987
    @geanbrandao4987Ай бұрын

    It's so easy now. Thank you for bringing this content to us! Keep up the great work, hugs from Brazil.

  • @JackCheungShingKit
    @JackCheungShingKitАй бұрын

    That JSON serialization is how I did before for passing argument. Though my approach on serialization & deserialization boilerplate can be ugly. Agree that it is a great improvement. I wish they made this available since the beginning.

  • @okeziokezino
    @okeziokezinoАй бұрын

    Philip my guy, this is awesome... love all your work

  • @vit4mint685
    @vit4mint685Ай бұрын

    Just wrapped up a project that used a lot of the old compose navigation. Looking forward to this

  • @quangthaita6084
    @quangthaita6084Ай бұрын

    Thanks who created this, thanks Phillips ❤ That's what we're waiting for

  • @lindaporsius
    @lindaporsiusАй бұрын

    Could you please make a video about Drawer/BottomNav using this lib? Especially how you would handle the selected-property of a nav-item (and the corresponding icons)

  • @raeesmohit01
    @raeesmohit01Ай бұрын

    It was really a big problem for beginners for me to change the screen and you made it easy now

  • @Mexicanerie
    @MexicanerieАй бұрын

    Amazing ! I'm already making a PR on my projec with theses improvments 😁

  • @coalacorey
    @coalacoreyАй бұрын

    Finally! As soon as the stable release is out I will implement it.

  • @moheltanani1036
    @moheltanani103619 күн бұрын

    If you were in tears, I'm crying right now hehe. Love it, thanks a lot!

  • @MrMacromicro
    @MrMacromicroАй бұрын

    Thanks philip ,you are really amazing.

  • @levlevkin1325
    @levlevkin1325Ай бұрын

    Thanks Philipp! This is amazing!

  • @diabetesatuniversity
    @diabetesatuniversityАй бұрын

    Thanks this is helpful. Love your videos.

  • @joatancarlos2704
    @joatancarlos2704Ай бұрын

    Thank you for bringing this content in a very didactic way

  • @vengateshm2122
    @vengateshm2122Ай бұрын

    There was a crash when we try to pass custom type like User(val id: Int, val name:String, val isPremium) in 2.8.0-alpha08 version which is fixed recently in version 2.8.0-beta01.

  • @AbuSaeeTech
    @AbuSaeeTechАй бұрын

    being as Android Native Developer appreciate 👍 you

  • @arthurabreu1904
    @arthurabreu1904Ай бұрын

    Aaaaand thanks again for sharing man! 🎉🎉🎉

  • @ordnavile
    @ordnavileАй бұрын

    Very good, my project is in its final stages. I'm going to take advantage and refactor it to be cleaner. Thank you very much friend.

  • @TimKaragosian
    @TimKaragosianАй бұрын

    This looks similar, but even better than Decompose. As always, thanks for sharing these great videos and quality content!

  • @yahussainmazloom1
    @yahussainmazloom1Ай бұрын

    Finally some good updates, finally so much relief after this update

  • @meidy3795
    @meidy3795Ай бұрын

    Good information Phillip ! Thos wpuld really helped my ptoject for compose multiplatform

  • Ай бұрын

    What an improvement!

  • @wame-bs7250
    @wame-bs7250Ай бұрын

    Just use Reimagined Navigation that has a bunch of cool features such as type-safe navigaiton and Parcelable support out of the box. Also community have the Decompose as a multiplatform solution. Both of these libraries are completely driven by community so if you prefer only official libraries it's always OK

  • @9Blurke9
    @9Blurke9Ай бұрын

    Now we need another navigation video to compare all the options with pros and cons for each 😄

  • @yanneckreiss
    @yanneckreissАй бұрын

    Haha I can relate to your joy about this update so much 😂Great video!

  • @DanielLuche
    @DanielLucheАй бұрын

    Nice. I'll be very usefull. Thanks to share bro

  • @MaisUmSomente
    @MaisUmSomente26 күн бұрын

    Amazing, worth sharing

  • @helmutbierbaumer2648
    @helmutbierbaumer2648Ай бұрын

    Highly appreciated 🥳

  • @radheshyampatel5578
    @radheshyampatel5578Ай бұрын

    I am Big fan of yours video 🎉

  • @siftoshka
    @siftoshkaАй бұрын

    What if I need this parameters on ViewModel?

  • @WakeupDev.
    @WakeupDev.Ай бұрын

    Lucky me.. I just started doing compose and KMP, so I haven't suffered like you 😄 I see some cool changes

  • @paulklein649
    @paulklein649Ай бұрын

    do somebody still wish to work for google and develop shitty frameworks and libs and maybe correct them 2 years later to be somewhat usable? I have the feeling that every dev-product google provides is garbage if jetbrains is not involved in the development

  • @arten8281
    @arten828129 күн бұрын

    OP gonna start using jet pack compose now

  • @solokiller5883
    @solokiller5883Ай бұрын

    Wow, this really is a lot easier than it used to be

  • @tmjromao
    @tmjromaoАй бұрын

    Thanks for the video. Is the bottom navigation also changing accordingly? What is needed to have screenB with bottom navigation graphs? Thanks.

  • @normno
    @normnoАй бұрын

    Так забавно наблюдать, как мои любимые yoytebers выпускают обзоры на новые функции библиотек android и kmp примерно в одно и тоже время и у каждого свое красивое решение использования.

  • @darknjko
    @darknjkoАй бұрын

    Thanks again for that demo. Spot on, as always 👍 Originaly, it seemed that the routing library was made to handle all routes as deeplinks. I wonder how deeplinks will work with that new approach? Should we write a deeplink handler that would reroute the user to the proper screen? 🤔

  • @rahathossainhimel7177
    @rahathossainhimel7177Ай бұрын

    Finally. Thank you Philipp

  • @alexmercerind
    @alexmercerindАй бұрын

    Finally we got it!!

  • @MultiDeivas
    @MultiDeivas2 күн бұрын

    It seems like the NavHost causes memory leaks on configuration changes, lovely :)

  • @weaponx3373
    @weaponx3373Ай бұрын

    It is a really great news !!!

  • @mdisi5967
    @mdisi5967Ай бұрын

    Wow this is amazing 🎉

  • @douglascf2
    @douglascf2Ай бұрын

    Thanks for the video! So exciting! I have a question, does it automatically work with SavedStateHandle in a ViewModel?

  • @jeonie9682

    @jeonie9682

    Ай бұрын

    I did today and worked well. but you should use the method now like "SavedStateHandle.toRoute" not just "savedStateHandle" in a ViewModel.

  • @patsnow1066
    @patsnow1066Ай бұрын

    Need this in KMM!

  • @carlosalvarado5331
    @carlosalvarado5331Ай бұрын

    excellent just like SwiftUI!!

  • @MateuszKowol-nu8lr
    @MateuszKowol-nu8lrАй бұрын

    Still nice improvement however the main advantage of f.e. voyager is that you do not need to declare the navHost and its all routes. Voyager allows you to just jump from ScreenA to ScreenB without declaring it in your navHost. Google's navigation is still kinda similar to the fragment navgraph but without the childlish arrowing thing.

  • @ismailcreatvt
    @ismailcreatvtАй бұрын

    This is awesomeeeeee!!!

  • @sw_a_ppy
    @sw_a_ppyАй бұрын

    Pls make more on this

  • @santyas
    @santyasАй бұрын

    Great Video!!! How do you retrieve args from the destination viewModel directly? If I use savedStateHandle inside viewModel still needs to safe the possible null argument using ?: or !!

  • @kuromujou1346
    @kuromujou1346Ай бұрын

    looking forward you make a video about this but with multiple nested graph. im newbie and im so confuse right now.

  • @simonsarhin2114
    @simonsarhin2114Ай бұрын

    I once said XML way of navigating was better than Compose. Now it's getting better. 😀

  • @aiyuayaan
    @aiyuayaanАй бұрын

    Thanks @Philipp Lackner, one thing I have to mention is we can't send empty string as value, I am using 2.8.0-beta01.

  • @SunAndMoon-zc9vd

    @SunAndMoon-zc9vd

    Ай бұрын

    With "empty string" do you mean: 1.a text with no characters; like "" 2. or do you mean undefined 3. or do you mean null

  • @aiyuayaan

    @aiyuayaan

    29 күн бұрын

    @@SunAndMoon-zc9vd I mean "" this

  • @kfirossmatityahu4295
    @kfirossmatityahu42959 сағат бұрын

    So actually they got the motivation from Voyager!? (pushing classes as "screens") great!

  • @Guilo583
    @Guilo583Ай бұрын

    thanks for video. Is this new lib support compose Multiplatform ?

  • @amirhosseinghafoorian9985
    @amirhosseinghafoorian9985Ай бұрын

    Cool update 🤩 what I'm more curious about is that how does recommendations work ? is it an extension or a live template or smth ?

  • @PhilippLackner

    @PhilippLackner

    Ай бұрын

    Gemini AI suggestions in Android Studio Jellyfish

  • @Pulkit__7
    @Pulkit__7Ай бұрын

    KotlinX Serialization brings back old memories from 2019

  • @filipmanevski9872
    @filipmanevski9872Ай бұрын

    Can you make a video on how to implement this way of navigation, using a navigation drawer for example or a bottom nav bar?

  • @MO1NKHAN
    @MO1NKHANАй бұрын

    OMG, I wish this could have come earlier. In my first app I have spent so much time and effort just to handle navigation without relying on 3rd party libraries. I have an e-commerce app running in production with lots of screens hanging on those route strings. It's time to refactor and remove all that boilerplate code.

  • @osamamohsen3993
    @osamamohsen3993Ай бұрын

    I love you ♥️♥️♥️♥️♥️ You are the best

  • @mark-147
    @mark-147Ай бұрын

    Any tips on naming? I already use FooScreen for the actual composable UI.

  • @MrMindfullness
    @MrMindfullnessАй бұрын

    I have purchased Essentials course. Will this be incorporated in the course as well?

  • @upbeatsarcastic8217
    @upbeatsarcastic8217Ай бұрын

    This is most exciting Compose feature to date imo. Having just finished a Compose app, navigation was the ugliest thing to deal with by a long way.

  • @manticomar1146
    @manticomar1146Ай бұрын

    The questino is in my view model how would I use savedStateHandle to extract the parameters?

  • @ren7907
    @ren790725 күн бұрын

    isn't that cool? YES it is f cool! Thanks Philipp

  • @resitsahin7787
    @resitsahin7787Ай бұрын

    Hi Philip, can you make a video about drag and drop of lazy column, i have stuck there. It seems they have recently added this capability.

  • @EdwinRebolledo
    @EdwinRebolledo9 күн бұрын

    We can use it in prod apps ? its on alpha or you recommend to use it from now on

  • @Lucky_PhilB
    @Lucky_PhilBАй бұрын

    Havent had the chance to play with this yet. How does it deal with deeplinks? And is this implemented for kmp compose?

  • @bitoons
    @bitoonsАй бұрын

    So cool and so safe !! But now how i can use deeplink with this serialize data road ?

  • @JeeteshSurana
    @JeeteshSuranaАй бұрын

    is it also available for KMM?

  • @deepaksingh-qd7xm
    @deepaksingh-qd7xmАй бұрын

    Now I will learn it I has paused my learning

  • @pdjeowudjx
    @pdjeowudjxАй бұрын

    so great

  • @gloooooom6229
    @gloooooom6229Ай бұрын

    hi! how would i do it if i have 2 UI sets for 2 usertypes? i have a radiobutton on the signup to identify them. how can i navigate them to the right set of UIs i already have my bottomnav that has 5 screens

  • @saidkamol3284
    @saidkamol3284Ай бұрын

    that's great, finally

  • @LAOSmnagiva809
    @LAOSmnagiva809Ай бұрын

    Finally, FINALLY!

  • @ivoheberle
    @ivoheberleАй бұрын

    Does this also work with the new kotlin multiplatform navigation or is it only an android feature?

  • @safakcelik3173
    @safakcelik3173Ай бұрын

    Is this usable also for KMM?

  • @user-nz3ve1jn1l
    @user-nz3ve1jn1lАй бұрын

    Can I use the library normally in kmm? Is it superior to voyager and decompose?

  • @zeroarst
    @zeroarstАй бұрын

    Is there a way to gradually migrate to this meanwhile still keep the current navigation in xml? Simple the current project has large codebase and too difficult to migrate it in one shot.

  • @MuhammedThansil-ms1ss
    @MuhammedThansil-ms1ssАй бұрын

    Can i use this in production app?

  • @BugraKaraahmetoglu
    @BugraKaraahmetogluАй бұрын

    Could you please explain how we can safely integrate vertex AI into the application with Google Cloud Console. I need this urgently.

  • @ayitinya
    @ayitinyaАй бұрын

    with this, do you create a separate file called and put in all data classes and objects? what would be a clean way to keep the screens? I have also thought of having a sealed class called Screens and then throwing all screens in there. curious to know what you suggest

  • @user-eu3rg9ce7v

    @user-eu3rg9ce7v

    5 күн бұрын

    I personally replaced sealed class with sealed interface and moved all serialized objects & classes to it

  • @danielreinhold8475
    @danielreinhold847515 күн бұрын

    Looks pretty nice, but in my opinion compose destinations by raamcosta is still easier to use & maintain.

  • @Alchemist10241
    @Alchemist10241Ай бұрын

    with this approach how can we do a shared transition between screens?

  • @pablovaldes6022
    @pablovaldes6022Ай бұрын

    Still a lot to improve. Dynamic load of graph in other libraries or modules, without the need to load all them upfront.

  • @kurtispalu
    @kurtispalu15 күн бұрын

    How do I reference the object into a navigation drawer argument? I keep getting crashes when I try to use a var to carry the object name into the navigation drawer item. Thanks

  • @PratikSahu18
    @PratikSahu18Ай бұрын

    Will the object be injected to viewmodel like it used to inject with the parameters when using hilt?

  • @BorisJakubov

    @BorisJakubov

    Ай бұрын

    private val ScreenA = savedStateHandle.toRoute()

  • @ntikomathaba2662
    @ntikomathaba26624 күн бұрын

    Is this the best navigation for Compose Multiplatform?

  • @michakazmierczak4464
    @michakazmierczak4464Ай бұрын

    how to use this with multi module project with feature modules not depending on each other just like android recommends?

Келесі