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

แชร์
ฝัง
  • เผยแพร่เมื่อ 2 ก.พ. 2025

ความคิดเห็น • 53

  • @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 ปีที่แล้ว +7

    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.

  • @Kuloczekk
    @Kuloczekk 2 ปีที่แล้ว +9

    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?

  • @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

  • @harisai3580
    @harisai3580 2 ปีที่แล้ว +3

    Belated happy birthday sir

  • @MatthewSmith-mt3kz
    @MatthewSmith-mt3kz ปีที่แล้ว

    Thanks for another great tutorial.

  • @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

  • @johndominicjasmin
    @johndominicjasmin 2 ปีที่แล้ว +1

    Great tutorial💚

  • @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.

  • @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 ปีที่แล้ว +1

      try using a mutableList instead of the persistentList

  • @devandriev
    @devandriev 2 ปีที่แล้ว

    Thanks, I can store user data in my app now

  • @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...

  • @fixifaxhd772
    @fixifaxhd772 ปีที่แล้ว

    Great Video!

  • @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?

  • @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.

  • @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?

  • @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

  • @damianviltres2202
    @damianviltres2202 2 ปีที่แล้ว

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

  • @mustafaammar551
    @mustafaammar551 2 ปีที่แล้ว

    very cool thank you bro 👍👍👍

  • @behnawm
    @behnawm 2 ปีที่แล้ว

    I loved when Siri suddenly appeared😂

  • @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

  • @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

  • @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

  • @hussien_fahmy
    @hussien_fahmy 2 ปีที่แล้ว

    What the theme you are using in android studio please?

  • @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

  • @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 👍

  • @winsonmac
    @winsonmac 2 ปีที่แล้ว +1

    Nice!!

  • @agungwatanabe318
    @agungwatanabe318 2 ปีที่แล้ว

    how do you serialize PersistentList in moshi?

  • @royss7656
    @royss7656 2 ปีที่แล้ว

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

  • @jabrane1564
    @jabrane1564 2 ปีที่แล้ว

    thanks

  • @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.

  • @muhammadsarimmehdi
    @muhammadsarimmehdi 2 ปีที่แล้ว

    how would you inject this datastore with hilt?

  • @Monarch_943
    @Monarch_943 2 ปีที่แล้ว

    Siri cracked me up XD

  • @ishantsharma16
    @ishantsharma16 2 ปีที่แล้ว +1

    Great brother

  • @divid3d806
    @divid3d806 2 ปีที่แล้ว

    Does updateData uses Dispatchers.IO by defult?

  • @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