The ULTIMATE Guide to Sharing Data Between Screens in Jetpack Compose

Поделиться
HTML-код
  • Опубликовано: 19 окт 2024

Комментарии • 84

  • @mohamadkhorsandi6103
    @mohamadkhorsandi6103 3 месяца назад

    man, let me say you something
    you are the hero
    as a beginner quite often i get confused
    and watching your videos is the ONLY solution

  • @Wiggy90210
    @Wiggy90210 Год назад +4

    I like using raamcosta destinations for compose, it really makes things easy. It alow passing data between @Composable's, but after this I can initialize my ViewModel with the value.

  • @seannatv
    @seannatv Год назад +4

    Another "con" of using navigation arg is that you need to make sure the string is URL encoded. I said con with quotes because you can handle this pretty easily, but sometimes you forget to do that and can spend significant of time to find out why something isn't working as expected.

    • @igormorozov6311
      @igormorozov6311 Год назад

      you are right. By the way, Philipp didn't mentionate this and I am curious: is navigation arg only one way for using callBacks? thanks

  • @saeidhonardan
    @saeidhonardan Год назад +2

    It is great that put the source code of the video. thanks

  • @MrCinekDBW
    @MrCinekDBW Год назад +2

    That's exactly what I needed! Thanks a lot

  • @MatthewSmith-mt3kz
    @MatthewSmith-mt3kz 8 месяцев назад

    Great tutorial, gave me a couple of good ideas for my own implementation. Thank you.

  • @tomsam2417
    @tomsam2417 Год назад +5

    Hi Philipp. Very helpful video as always. I have a question: why are you using shared preferences instead of data store?

    • @ctcat4950
      @ctcat4950 Год назад +11

      Because the API design of the shared preference is much more simpler than data store. So that this video can focus on the topic (instead of a lot of unnecessary unrelated code), I guess.

  • @amrel-tahhan8588
    @amrel-tahhan8588 Год назад +1

    I really love the way you demonstrate thing ♥
    but I think you should add the video to the compose playlist so we can find it easily

  • @inno_san
    @inno_san Год назад +2

    I am using hilt view model with compose destinations, pretty neat

  • @legato0
    @legato0 Год назад

    Thanks for sharing your knowledge 👍. As a beginner, I always used the first option to pass parameters between views. Now I can start testing different ways 😄

  • @SiamakAshrafi
    @SiamakAshrafi Год назад +1

    Nice. Very clear 🙂

  • @vengateshm2122
    @vengateshm2122 Год назад +2

    Hi Phillip,
    Can we have shared viewmodel and individual viewmodel for on one onboarding screen composable at same time?

  • @Flea997
    @Flea997 2 месяца назад

    what if I want to use navigation arguments to navigate to a screen that used a shared view model? It looks like that the saveStateHandle is not updated with navigation argument being it associated to the root of the graph

  • @starry_shivam
    @starry_shivam Год назад

    Helpful as always, Thanks!

  • @arielapp9469
    @arielapp9469 Год назад +4

    I wish there was a better way of writing jetpack navigation better :\
    anyway thank you for this lovely guide.
    is there a difference between @Singleton and object in kotlin?

    • @ChrisAthanas
      @ChrisAthanas Год назад +1

      No, just one is for hilt annotation processing and the other is built into the language

  • @csmuthukuda916
    @csmuthukuda916 Год назад +2

    How can we share a value between main activity and a compose secreen in a different feature module..value is defined in main acitivity and i want to get it from the composable

  • @nourmorgan6751
    @nourmorgan6751 Год назад +2

    Hey Philipp , what about using compose destinations ?

  • @РинатФ-я7о
    @РинатФ-я7о 9 месяцев назад

    Hey Philipp. How to pass arguments to shared viewmodel?

  • @suchizgames4748
    @suchizgames4748 10 месяцев назад

    Hi, thanks for enlightening me. I am using DaggerHilt in a Jetpack Compose project with nested graph. So I chose to share a viewmodel which is graph scoped. But I am struggling to inject that sharedViewmodel into "children" viewmodels. Is there a way of doing this ? thanks

  • @techug2719
    @techug2719 7 месяцев назад

    Help:
    It has been an increasing trend to have routes stored in a sealed class as objects, i am having trouble following up using my own code base because when i call the route i find it difficult to add the parameter i am passing as i am navigating, how can I do this?

  • @craigberry5713
    @craigberry5713 Год назад +1

    Hi Philipp, first thank you for the great tutorials.I have a question if you have time?
    In the last (persistent storage) example, if we want to clear the session every time the application is closed / destroyed, but we want the session to persist through the lifetime of the app, where is the appropriate place to clear it? Isn't onDestroy() called sometimes during process death?
    Thank you again!

    • @igormorozov6311
      @igormorozov6311 Год назад +1

      hi, this is not onDestroy(), look at 21:11, he is using fun clearSession(). Philipp told he call this functions when he need to log out

  • @alexmercerind
    @alexmercerind 7 месяцев назад

    Does composition local work through configuration changes?

  • @mubashirpa
    @mubashirpa Год назад +2

    How to pass data to the previous screen
    Eg: I have two screen first screen is to show the list of some items from database and second screen is used to create an item. When I create an item from the second screen I want close that screen and show the updated list in the first screen

    • @Polite_person_
      @Polite_person_ Год назад

      ActivityResultApi

    • @JakkeJakobsen
      @JakkeJakobsen Год назад +2

      Viewmodel with stateflows should work for this

    • @osisuper98
      @osisuper98 Год назад

      Save to db on the second screen and observe latest changes from the first screen by calling room again. Make sure your dao function, if dealing with a list for example, emits a flow. That makes it easy to read latest db items without any hassle.

  • @BigCarso
    @BigCarso 21 день назад

    Global Singleton would be perfect for login state imo

  • @trp4871
    @trp4871 Год назад +1

    Hi Philipp, I have a question about docker. Do we (android dev) need to learn docker or it just nice to know

    • @Latsson2
      @Latsson2 Год назад +2

      No you don't

    • @ChrisAthanas
      @ChrisAthanas Год назад +1

      Not needed for android dev
      It’s a backend tech

  • @vinaykumarpatel649
    @vinaykumarpatel649 Год назад +2

    In my current organization we use Singletons inside Repository to share users login data between different viewmodels, and they never experience any issue with that. I still don't understand why are you saying to avoid using Singleton classes to share data between. It is usuful when we need to access user's details in different pages.

    • @aroxing
      @aroxing 11 месяцев назад

      Android Studio always raises warnings about memory leaks using Singleton. I'm also curious why they suggest using Singletons but at the same time warn about memory leaks.

    • @antonhelsgaun
      @antonhelsgaun 11 месяцев назад

      ​@@aroxinghow does using a singleton leak memory? Isn't the whole point that it doesn't?

    • @aroxing
      @aroxing 11 месяцев назад

      @@antonhelsgaun Ask Android API and Android Studio creators

    • @PedroBarbosaRoman
      @PedroBarbosaRoman Месяц назад +1

      @@antonhelsgaun I think that they mean that you might overuse singletons when they are not needed every time. If you use for example a singleton for a form, when you are in other parts of the app that singleton is still there using memory. However this can be mitigated by the use of scopes in the dependency injection framework.

  • @siyabulelashabalala8963
    @siyabulelashabalala8963 Год назад +1

    Hi Philipp, love your videos. I have a question here, in your few previous videos you use raamcosta library as a navigation tool and lately I've seen you stop using it and I saw it also seems to provide an easy way to share data since it can share reference data. What disadvantage you discovered that made you stop using it?

    • @PhilippLackner
      @PhilippLackner  Год назад +5

      I didn't stop using it, but I want my videos to be helpful for as many people as possible so I also use the official practices for such videos

    • @siyabulelashabalala8963
      @siyabulelashabalala8963 Год назад

      ​@@PhilippLackner cool thanks, one more question. Why do you use sealed class when a sealed interface can do the job? Especially on the event rapper class where the classes inside the sealed class share no common data unlike the Resource class

  • @Prakhar1701
    @Prakhar1701 9 месяцев назад

    can any one tell me how to pass a custom model class object with navigation and what Navtype should i use, please help me

  • @emmanuelmtera5936
    @emmanuelmtera5936 Год назад

    On the last option is using sqDelight a choice for Kotlin Multiplatform Mobile?

  • @JohanAlbrectsen
    @JohanAlbrectsen Год назад +2

    I'm sharing a viewModel between a regular composable and a sheet, but the UI doesn't update when I change the sharedState in the viewModel from the sheet. How can I make it recompose when the value in the viewModel is updated?

    • @JohanAlbrectsen
      @JohanAlbrectsen Год назад +3

      Resolved, used mutableStateOf instead of MutableStateFlow, for anyone wondering 😁

    • @helloworld_sw
      @helloworld_sw 11 месяцев назад

      @@JohanAlbrectsen why MutableStateFlow didn't work

  • @eibaal-gx9os
    @eibaal-gx9os Год назад +1

    When you try jetpack compose multiplataform ?

  • @kevalkanpariya
    @kevalkanpariya Год назад +1

    Please make video on Oauth2 Authentication with Webview using Jetpack compose
    How the CallBackUrl retrieved from the api and retrieve access token to make api calls.

    • @ayodelekehinde
      @ayodelekehinde Год назад

      Well you can't use WebView for oauth due to security reasons. But you can use custom tabs.

    • @kevalkanpariya
      @kevalkanpariya Год назад

      @@ayodelekehinde can tell me about more

    • @ayodelekehinde
      @ayodelekehinde Год назад

      @@kevalkanpariya On how to use custom tabs??

  • @androidkotlin-6234
    @androidkotlin-6234 Год назад +1

    how can I pass nullable value? for example, I need to pass Long (as LocalDateTime), and sometime this value can be nullable. If I pass null for that value, my application is crashing, because it's an exception about wrong navigation, can't find route

    • @excalibur8147
      @excalibur8147 Год назад +2

      At the function call who gets nullable value, make it nullable and assign a value if null with " ?: "
      fun getTime(nullableVariable: Long ?: 0)
      Or before using nullable variable, check if it is null
      if (nullableVariable != null) {
      //do if not null...
      } else {
      //do if null...
      }

  • @khayyamaurelius912
    @khayyamaurelius912 5 месяцев назад

    Great video

  • @khatteeeer_Dev
    @khatteeeer_Dev Год назад

    How can we make favorite item to database and when colse app and run it again the fav button will be active based on database ?

  • @AsadKhan-et9ux
    @AsadKhan-et9ux 10 месяцев назад

    how to use hilt shared viewmodel

  • @itsjee9700
    @itsjee9700 Год назад

    Can we share complex object data without using SharedViewModel ?

  • @chelfe
    @chelfe Год назад

    does passed intent arguments survive process death?

  • @moisesvalera3597
    @moisesvalera3597 Год назад

    In SharedViewModel approach, how can I reset the viewModel once I leave "personal_details" route?, it's always loading previous data onceI got back into it again.

    • @PhilippLackner
      @PhilippLackner  Год назад

      The whole graph needs to be popped from the backstack to clear it

  • @neronguyenvn
    @neronguyenvn Год назад

    how to properly share with activity please tell me

  • @aviator1472
    @aviator1472 8 месяцев назад

    14:12 why not to use Object?

  • @sanky52
    @sanky52 Год назад

    How to send parcelable object to start destination

  • @the_nomadic_ajith
    @the_nomadic_ajith Год назад

    One question, why do we have to redeclare a new mutable state in viewmodel and assign it to original stateflow. Is there any issue if create a stateflow in viewmodel and directly access it from composables? As long as i make sure that i am not writing anything to the state, is it fine?
    Ref: private val val sharedState = MutableStateFlow( value: 0)
    sharedState = _sharedState.asStateFlow)

    • @JepRM
      @JepRM Год назад +2

      That .asStateFlow() returns the stateflow as immutable. So the visible sharedState is immutable. This enforces that there is a single source of truth for that view state as only the view model can update it. This is something jetbrains said would be improved at some point in kotlin 2 🤞

  • @VictorFarkas-fp2gl
    @VictorFarkas-fp2gl Год назад

    what about Preferences DataStore?

  • @John-qt6qk
    @John-qt6qk Год назад

    Thanks

  • @SpaceGuideHub
    @SpaceGuideHub Год назад

    It seems to me that data binding in xml layout projects is easy, but it more hell then compose

  • @seanknowles9985
    @seanknowles9985 Год назад

    In what order shall we take all your courses?!

    • @PhilippLackner
      @PhilippLackner  Год назад

      They don't depend on each other, so as you like 👍🏼

    • @seanknowles9985
      @seanknowles9985 Год назад

      @@PhilippLackner legend will let you know when I am done! Also, would be super cool to get some discount on your monthly subs for the freelancer group for those who bought the ultimate package:) just saying..

  • @thedarkknight1865
    @thedarkknight1865 Год назад +12

    I use bundle

  • @amansingh.h716
    @amansingh.h716 21 день назад

    flutter is best to send data from one screen to other

  • @huddahhuddah517
    @huddahhuddah517 Год назад

    Im still hard to understand navigation in compose :(

  • @mahmoudalkateb2008
    @mahmoudalkateb2008 Год назад +1

    🎉

  • @tuyulghost291
    @tuyulghost291 Год назад +5

    your english so fast, please make it slow

  • @Adam0001
    @Adam0001 Год назад

    Hello Mr.Pilipp
    Could you make an app with multi-module and navigation, and the app consists of two types of user.
    Thanks a lot 🤍

  • @seanoh1989
    @seanoh1989 Год назад +6

    Another "con" of using navigation arg is that you need to make sure the string is URL encoded. I said con with quotes because you can handle this pretty easily, but sometimes you forget to do that and can spend significant of time to find out why something isn't working as expected.

    • @osisuper98
      @osisuper98 Год назад +4

      I once spent 3hrs on this little thing. Very painful experience.

    • @ChrisAthanas
      @ChrisAthanas Год назад +2

      I got snagged on this early on
      They should have made it some kind of standard hint

  • @danilsveticov6196
    @danilsveticov6196 Год назад

    Thanks