Type-Safe Preferences With Proto DataStore (without Protobuf Files!) - Full Guide

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

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

  • @DARKcarlos1
    @DARKcarlos1 2 года назад +5

    Nice explanation… and I loved the part of the PersistentList, even when it wasn’t the scope of the tutorial, you nailed it with that explanation. Hope you can make a tutorial migrating from shared preferences to proto datastore. Thanks phillip

  • @memezilla5639
    @memezilla5639 2 года назад +8

    can you please make a specific video about sockets plz

  • @AlexMendezNewbrick
    @AlexMendezNewbrick 2 года назад +6

    In common situations where you just need to save a few app settings, Data Store implemented this way is Ok. The only "thing" with this implementation is that it's killing the performance benefits of protocol buffers. The JSON conversion is slow, kotlin-serialization library is faster than Gson, but, it's still slow, if I'm not mistaken it uses reflection which is expensive. In the case you need to access many registries in short periods of time (perhaps transferring data to/from server) using the serialization library on top of protocol buffers would be a mistake. In other words, protocol Buffers is a faster alternative to JSON so using JSON objects in a protocol buffer would be a performance problem.

  • @coffeedude
    @coffeedude 2 года назад +2

    Can you make a video on how to actually use the protobuf files? I'm going to use the method you are showcasing for the time being because the alternative was too difficult for me

  • @Kuloczekk
    @Kuloczekk 2 года назад +8

    Hmm.. I also have error:
    kotlinx.serialization.SerializationException: Class 'SmallPersistentVector' is not registered for polymorphic serialization in the scope of 'PersistentList'.
    Mark the base class as 'sealed' or register the serializer explicitly.
    With the data classes:
    @Serializable
    data class ShoppingCart(
    val productsList: PersistentList = persistentListOf()
    )
    @Serializable
    data class ShoppingCartItem(
    val id: String = "",
    val size: String = ""
    )

    • @peterka4711
      @peterka4711 2 года назад +1

      Struggling with this as well. Seems to be an issue with PersistentList and kotlin immutable collections or even kapt apparently. Have you managed to fix the error?

    • @binqiangliang4745
      @binqiangliang4745 2 года назад

      Same problem here, did you find a solution?

  • @seanthomas9398
    @seanthomas9398 2 года назад +1

    Typically local storage is behind a repository/data layer. I wonder if there's a clean yet convenient way to do this.

  • @harisai3580
    @harisai3580 2 года назад +3

    Belated happy birthday sir

  • @CoderzF1
    @CoderzF1 2 года назад +1

    Awesome. I was able to follow along, except I added a few Strings to mine as well. Username, User Email, and Language

    • @CoderzF1
      @CoderzF1 2 года назад

      I didnt try to do anything with a list yet though

  • @andromadusnaruto1544
    @andromadusnaruto1544 2 года назад +1

    Thanks for the tutorial. Great explanation and practical implementation. I'm about to start Android soon but I've been using Kotlin for the server-side using Ktor. It's been great...

  • @aravindsundar1955
    @aravindsundar1955 2 года назад +2

    How to handle data migration if we add new or modify the properties in AppSettings?

  • @arjunbhat6502
    @arjunbhat6502 2 года назад +11

    Error occured: kotlinx.serialization.SerializationException: Class 'SmallPersistentVector' is not registered for polymorphic serialization in the scope of 'PersistentList'.

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

      yes me too

    • @hargowins
      @hargowins 10 месяцев назад +1

      try using a mutableList instead of the persistentList

  • @MatthewSmith-mt3kz
    @MatthewSmith-mt3kz Год назад

    Thanks for another great tutorial.

  • @renderset2937
    @renderset2937 2 года назад +7

    Philipp can you please make video on How to learn android development in kotlin from start Im really confused

    • @memeseed7062
      @memeseed7062 2 года назад

      probably

    • @redpanda8904
      @redpanda8904 2 года назад

      im also confused

    • @olohialli9289
      @olohialli9289 2 года назад +1

      check through his channel, there is a ton of tutorials on that

  • @damianviltres2202
    @damianviltres2202 2 года назад

    Nice video, How can I get access to the dataStore into a viewModel class or other class. Thanks

  • @hosenalzuhile3019
    @hosenalzuhile3019 2 года назад

    Thanks for explaining. would this work with parcelables classes?

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

    I stumbled upon this - nice video, but how does this work with Hilt?

  • @devandriev
    @devandriev 2 года назад

    Thanks, I can store user data in my app now

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

    Could you do a quick vid on using datastore in a viewmodel? I'm trying to apply this video to using it in a viewmodel but failing. I can't use the dataStore in the viewmodel after I create it.

  • @johndominicjasmin
    @johndominicjasmin 2 года назад +1

    Great tutorial💚

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

    In wich package should i create the AppSettings and AppSetting Serializer in a MVVM project? Actually I created both clasess in my domain layer and use it throught my viewModel. Is that ok?

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

    Thankseveryone

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

    I have a settings screen layout composable how can i access it from this it does not show up do i really need to create from activities

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

    Great Video!

  • @muhammadsarimmehdi
    @muhammadsarimmehdi 2 года назад

    how do we reset the dataStore key values? Do we just reset them to the default values? Is there a one-line method for this

  • @haissayf
    @haissayf 2 года назад +3

    Why not just use room database, I've always wondered 🤔

    • @divid3d806
      @divid3d806 2 года назад +1

      I think creating and accessing database is more resource expensive

    • @haissayf
      @haissayf 2 года назад

      @@divid3d806 That makes sense, thanks for clarifying 👍

  • @hussien_fahmy
    @hussien_fahmy 2 года назад

    What the theme you are using in android studio please?

  • @aminsakha155
    @aminsakha155 2 года назад

    hey , did you really test adding item into knownLocations? it dose not work since its not workig with list of object when serializing

  • @mahdibahmanpour1495
    @mahdibahmanpour1495 2 года назад

    Is there any way to use it alongside the dagger hilt?

  • @PritamDas-rj5fk
    @PritamDas-rj5fk Год назад

    what is difference between proto datastore and Room database

  • @royss7656
    @royss7656 2 года назад

    We can write and read, but how to remove it from local storage

  • @agungwatanabe318
    @agungwatanabe318 2 года назад

    how do you serialize PersistentList in moshi?

  • @muhammadsarimmehdi
    @muhammadsarimmehdi 2 года назад

    how would you inject this datastore with hilt?

  • @mustafaammar551
    @mustafaammar551 2 года назад

    very cool thank you bro 👍👍👍

  • @behnawm
    @behnawm 2 года назад

    I loved when Siri suddenly appeared😂

  • @winsonmac
    @winsonmac 2 года назад +1

    Nice!!

  • @divid3d806
    @divid3d806 2 года назад

    Does updateData uses Dispatchers.IO by defult?

  • @jabrane1564
    @jabrane1564 2 года назад

    thanks

  • @ishantsharma16
    @ishantsharma16 2 года назад +1

    Great brother

  • @LakshyaMathersShady
    @LakshyaMathersShady 2 года назад

    What is the point of if u gonna convert to string and save it anyway? I dont see the use of proto buffs being here.

  • @Monarch_943
    @Monarch_943 2 года назад

    Siri cracked me up XD

  • @nicomolon9096
    @nicomolon9096 2 года назад +4

    Hello guys,
    I'm trying to play it around and my code looks like this
    private suspend fun setLanguage(language: Language) {
    dataStore.updateData {
    it.copy(
    language = language,
    knownLocations = it.knownLocations.mutate { locationList ->
    locationList.add(Location(lat = 12345678.600, lng = 25664125.641))
    })
    }
    }
    is there anyone here try to save the list of Location and got an error like "kotlinx.serialization.SerializationException: Class 'SmallPersistentVector' is not registered for polymorphic serialization in the scope of 'PersistentList'.
    Mark the base class as 'sealed' or register the serializer explicitly."
    How can I soleve this error, Thank you in advance