Romolo  Morelli

Romolo Morelli

1677876240

Come serializzare i tuoi dati in Kotlin e Jetpack Compose

Scopri come serializzare i tuoi dati in Kotlin e Jetpack Compose. Imposta la serializzazione in un progetto Jetpack Compose. Come serializzare una classe di dati. Come deserializzare una classe di dati. 

La serializzazione è il processo di trasformazione dei dati che si trovano in un formato in un altro formato che può essere archiviato.

Se hai mai lavorato con un database o recuperato dati da un server, tutto questo dovrebbe esserti familiare. In caso contrario, sei nel posto giusto.

In questo tutorial, esamineremo:

  • Come impostare la serializzazione in un progetto Jetpack Compose
  • Come serializzare una classe di dati
  • Come deserializzare una classe di dati

Potresti chiederti, cosa c'è di così speciale nella serializzazione in Jetpack Compose? In sostanza, non c'è molta differenza rispetto a un normale progetto Kotlin Android. L'unica differenza è nella configurazione.

Come impostare tutto

Ogni versione di Jetpack Compose corrisponde a una versione di Kotiln con cui è compatibile. Ogni versione della libreria kotlin-serialization è anche compatibile con una versione specifica di Kotlin. Quindi devi assicurarti che ciascuna delle tre parti di questo treppiede sia compatibile tra loro.

Come puoi?

La tua prima risorsa che vorrai consultare è Compose to Kotlin Compatibility Map .

1_5brVwILW54aNaFFimDF87Q

Qui puoi vedere quale versione di Jetpack Compose corrisponde a quale versione di Kotlin.

La seconda risorsa di cui avrai bisogno è la pagina dei rilasci per la libreria kotlin-serialization. Lì troverai quale versione della libreria è compatibile con quale versione di Kotlin.

1_y6Ba1fROOcSSXXm-Nll4Ew

Confuso? 😕

Illustriamolo con un esempio:

  • La tua versione di Jetpack Compose è 1.1.0 .
  • Esaminando la mappa di compatibilità, vedi che è compatibile con la versione 1.6.10 di Kotlin .
  • Andando alla pagina delle versioni della libreria kotlin-serialization, vedi che la versione della libreria kotlin-serialization che devi usare è 1.3.2 .

Entra nel tuo file build.gradle a livello di progetto e all'interno dell'oggetto buildscript, nella sezione delle dipendenze, inserisci classpath per la libreria kotlin-serialization con la versione che ti serve.

dependencies {
        ...
        classpath "org.jetbrains.kotlin:kotlin-serialization:X.Y.Z"
 }

Quindi, vai al file build.gradle della tua applicazione e fai queste due cose:

  1. Aggiungi l' id 'org.jetbrains.kotlin.plugin.serialization' all'interno dei plugin nella parte superiore del file:
plugins {
   ...
   id 'org.jetbrains.kotlin.plugin.serialization'
}

2. Nella parte inferiore del file, all'interno della sezione delle dipendenze, aggiungi l'implementazione 'org.jetbrains.kotlinx:kotlinx-serialization-json:XYZ' :

dependencies {
   ...
   implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:X.Y.Z'
}

Sincronizza il tuo progetto e dovresti essere a posto.

Nota che stiamo usando il formato json della libreria, ma ci sono anche altri formati supportati:

  • Buffer di protocollo
  • CBOR (Rappresentazione concisa di oggetti binari)
  • Proprietà
  • HOCON (notazione dell'oggetto di configurazione ottimizzata dall'uomo)

⚠️ Se riscontri errori, assicurati che le versioni inserite siano corrette

Come costruire la tua classe di dati

Per avere qualcosa che possiamo serializzare e successivamente deserializzare, dobbiamo lavorare con le classi di dati.

La creazione di una classe di dati è semplice. Se stai utilizzando Android Studio, fai clic con il pulsante destro del mouse all'interno del modulo del tuo progetto e scegli Nuovo file Kotlin. Inserisci il nome della tua classe e quindi aggiungi la parola chiave data prima di essa.

Per il bene di questo articolo, diciamo che stiamo lavorando con un'API che restituisce un elenco di utenti. Ogni oggetto utente ha una gamma di attributi che può avere (solo per citarne alcuni):

  • Nome di battesimo
  • Cognome
  • Età
  • Data di nascita
  • Id

Per rendere serializzabile la nostra classe di dati, tutto ciò che devi fare è aggiungere l' annotazione @Serializable sopra la dichiarazione di classe.

@Serializable
data class UserModel(
   val firstName: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long
)

Abbastanza elegante, vero?

Beh, c'è di più.

La variabile che conterrà il nome dell'utente è scritta come firstName. Ciò significa che nella risposta dal nostro server, deve tornare in un campo con lo stesso nome.

A volte, nelle risposte API, le chiavi non sono scritte in camelCase, ma piuttosto in kebab_case. Ciò significherebbe che la chiave per il nome potrebbe essere first_name. In tal caso, dovremmo scriverlo in questo modo:

@Serializable
data class UserModel(
   val first_name: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long
)

Ma questa non è la convenzione per i nomi delle proprietà a Kotlin.

Quindi cosa possiamo fare?

Possiamo usare l' annotazione @SerialName . Questo ci consente di contrassegnare quale sarà il nome del campo dalla risposta e quindi scrivere qualsiasi cosa come proprietà per esso.

@Serializable
data class UserModel(
   @SerialName("first_name")
   val firstName: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long
)

Come serializzare e deserializzare

Ora che la nostra classe di dati è stata configurata, godiamoci i frutti del nostro lavoro. Ogni volta che abbiamo bisogno di serializzare la nostra classe di dati, useremo il metodo Json.encodeToString :

val dataAsString: String = Json.encodeToString(user)

Quando eseguiamo la riga di codice sopra, otterremo la nostra classe di dati sotto forma di stringa.

Deserializzare i nostri dati è semplice quanto serializzarli. Useremo il metodo Json.decodeFromString :

val user: UserModel = Json.decodeFromString<UserModel>(dataAsString)

✋ Si noti che abbiamo specificato a quale tipo di dati vogliamo deserializzare con il parametro type (<UserModel>).

photo-1600176842064-635fe81d2441?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxMTc3M3wwfDF8c2VhcmNofDMwfHxyZW1vdGUlMjBjb250cm9sfGVufDB8fHx8MTY3NTAxODM0NQ&ixlib=rb0

Foto di Immo Wegmann / Unsplash

Tempo per qualche credito extra.

Diciamo che nella tua classe di dati hai un campo che non vuoi serializzare. Se prendiamo la nostra classe UserModel, immaginiamo di voler avere l'immagine reale di un utente (bitmap).

@Serializable
data class UserModel(
   @SerialName("first-name")
   val firstName: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long,
   var photo: Bitmap?
)

Questo non è qualcosa che otterremo dalla nostra chiamata API, quindi come possiamo escluderlo? Perché se non lo facciamo, la nostra serializzazione fallirà.

Qui in nostro soccorso c'è l' annotazione @Transient .

@Serializable
data class UserModel(
   @SerialName("first-name")
   val firstName: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long,
   @Transient
   var photo: Bitmap?
)

Ciò escluderà il campo contrassegnato dalla serializzazione e dalla deserializzazione.

  • Se vuoi vedere un esempio di vita reale dell'utilizzo della serializzazione all'interno di un progetto, puoi dare un'occhiata a un progetto che ho realizzato qui
  • E se vuoi leggere altri articoli che ho scritto, puoi andare qui
  • Per ulteriori informazioni sulla libreria kotlin-serialization, puoi andare qui

Grazie per aver letto! Buona serializzazione.

Fonte: https://www.freecodecamp.org

#kotlin #jetpack 

What is GEEK

Buddha Community

Come serializzare i tuoi dati in Kotlin e Jetpack Compose
Romolo  Morelli

Romolo Morelli

1677876240

Come serializzare i tuoi dati in Kotlin e Jetpack Compose

Scopri come serializzare i tuoi dati in Kotlin e Jetpack Compose. Imposta la serializzazione in un progetto Jetpack Compose. Come serializzare una classe di dati. Come deserializzare una classe di dati. 

La serializzazione è il processo di trasformazione dei dati che si trovano in un formato in un altro formato che può essere archiviato.

Se hai mai lavorato con un database o recuperato dati da un server, tutto questo dovrebbe esserti familiare. In caso contrario, sei nel posto giusto.

In questo tutorial, esamineremo:

  • Come impostare la serializzazione in un progetto Jetpack Compose
  • Come serializzare una classe di dati
  • Come deserializzare una classe di dati

Potresti chiederti, cosa c'è di così speciale nella serializzazione in Jetpack Compose? In sostanza, non c'è molta differenza rispetto a un normale progetto Kotlin Android. L'unica differenza è nella configurazione.

Come impostare tutto

Ogni versione di Jetpack Compose corrisponde a una versione di Kotiln con cui è compatibile. Ogni versione della libreria kotlin-serialization è anche compatibile con una versione specifica di Kotlin. Quindi devi assicurarti che ciascuna delle tre parti di questo treppiede sia compatibile tra loro.

Come puoi?

La tua prima risorsa che vorrai consultare è Compose to Kotlin Compatibility Map .

1_5brVwILW54aNaFFimDF87Q

Qui puoi vedere quale versione di Jetpack Compose corrisponde a quale versione di Kotlin.

La seconda risorsa di cui avrai bisogno è la pagina dei rilasci per la libreria kotlin-serialization. Lì troverai quale versione della libreria è compatibile con quale versione di Kotlin.

1_y6Ba1fROOcSSXXm-Nll4Ew

Confuso? 😕

Illustriamolo con un esempio:

  • La tua versione di Jetpack Compose è 1.1.0 .
  • Esaminando la mappa di compatibilità, vedi che è compatibile con la versione 1.6.10 di Kotlin .
  • Andando alla pagina delle versioni della libreria kotlin-serialization, vedi che la versione della libreria kotlin-serialization che devi usare è 1.3.2 .

Entra nel tuo file build.gradle a livello di progetto e all'interno dell'oggetto buildscript, nella sezione delle dipendenze, inserisci classpath per la libreria kotlin-serialization con la versione che ti serve.

dependencies {
        ...
        classpath "org.jetbrains.kotlin:kotlin-serialization:X.Y.Z"
 }

Quindi, vai al file build.gradle della tua applicazione e fai queste due cose:

  1. Aggiungi l' id 'org.jetbrains.kotlin.plugin.serialization' all'interno dei plugin nella parte superiore del file:
plugins {
   ...
   id 'org.jetbrains.kotlin.plugin.serialization'
}

2. Nella parte inferiore del file, all'interno della sezione delle dipendenze, aggiungi l'implementazione 'org.jetbrains.kotlinx:kotlinx-serialization-json:XYZ' :

dependencies {
   ...
   implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:X.Y.Z'
}

Sincronizza il tuo progetto e dovresti essere a posto.

Nota che stiamo usando il formato json della libreria, ma ci sono anche altri formati supportati:

  • Buffer di protocollo
  • CBOR (Rappresentazione concisa di oggetti binari)
  • Proprietà
  • HOCON (notazione dell'oggetto di configurazione ottimizzata dall'uomo)

⚠️ Se riscontri errori, assicurati che le versioni inserite siano corrette

Come costruire la tua classe di dati

Per avere qualcosa che possiamo serializzare e successivamente deserializzare, dobbiamo lavorare con le classi di dati.

La creazione di una classe di dati è semplice. Se stai utilizzando Android Studio, fai clic con il pulsante destro del mouse all'interno del modulo del tuo progetto e scegli Nuovo file Kotlin. Inserisci il nome della tua classe e quindi aggiungi la parola chiave data prima di essa.

Per il bene di questo articolo, diciamo che stiamo lavorando con un'API che restituisce un elenco di utenti. Ogni oggetto utente ha una gamma di attributi che può avere (solo per citarne alcuni):

  • Nome di battesimo
  • Cognome
  • Età
  • Data di nascita
  • Id

Per rendere serializzabile la nostra classe di dati, tutto ciò che devi fare è aggiungere l' annotazione @Serializable sopra la dichiarazione di classe.

@Serializable
data class UserModel(
   val firstName: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long
)

Abbastanza elegante, vero?

Beh, c'è di più.

La variabile che conterrà il nome dell'utente è scritta come firstName. Ciò significa che nella risposta dal nostro server, deve tornare in un campo con lo stesso nome.

A volte, nelle risposte API, le chiavi non sono scritte in camelCase, ma piuttosto in kebab_case. Ciò significherebbe che la chiave per il nome potrebbe essere first_name. In tal caso, dovremmo scriverlo in questo modo:

@Serializable
data class UserModel(
   val first_name: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long
)

Ma questa non è la convenzione per i nomi delle proprietà a Kotlin.

Quindi cosa possiamo fare?

Possiamo usare l' annotazione @SerialName . Questo ci consente di contrassegnare quale sarà il nome del campo dalla risposta e quindi scrivere qualsiasi cosa come proprietà per esso.

@Serializable
data class UserModel(
   @SerialName("first_name")
   val firstName: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long
)

Come serializzare e deserializzare

Ora che la nostra classe di dati è stata configurata, godiamoci i frutti del nostro lavoro. Ogni volta che abbiamo bisogno di serializzare la nostra classe di dati, useremo il metodo Json.encodeToString :

val dataAsString: String = Json.encodeToString(user)

Quando eseguiamo la riga di codice sopra, otterremo la nostra classe di dati sotto forma di stringa.

Deserializzare i nostri dati è semplice quanto serializzarli. Useremo il metodo Json.decodeFromString :

val user: UserModel = Json.decodeFromString<UserModel>(dataAsString)

✋ Si noti che abbiamo specificato a quale tipo di dati vogliamo deserializzare con il parametro type (<UserModel>).

photo-1600176842064-635fe81d2441?crop=entropia&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxMTc3M3wwfDF8c2VhcmNofDMwfHxyZW1vdGUlMjBjb250cm9sfGVufDB8fHx8MTY3NTAxODM0NQ&ixlib=rb0

Foto di Immo Wegmann / Unsplash

Tempo per qualche credito extra.

Diciamo che nella tua classe di dati hai un campo che non vuoi serializzare. Se prendiamo la nostra classe UserModel, immaginiamo di voler avere l'immagine reale di un utente (bitmap).

@Serializable
data class UserModel(
   @SerialName("first-name")
   val firstName: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long,
   var photo: Bitmap?
)

Questo non è qualcosa che otterremo dalla nostra chiamata API, quindi come possiamo escluderlo? Perché se non lo facciamo, la nostra serializzazione fallirà.

Qui in nostro soccorso c'è l' annotazione @Transient .

@Serializable
data class UserModel(
   @SerialName("first-name")
   val firstName: String,
   val lastName: String,
   val age: Int,
   val birthdate: Date,
   val id: Long,
   @Transient
   var photo: Bitmap?
)

Ciò escluderà il campo contrassegnato dalla serializzazione e dalla deserializzazione.

  • Se vuoi vedere un esempio di vita reale dell'utilizzo della serializzazione all'interno di un progetto, puoi dare un'occhiata a un progetto che ho realizzato qui
  • E se vuoi leggere altri articoli che ho scritto, puoi andare qui
  • Per ulteriori informazioni sulla libreria kotlin-serialization, puoi andare qui

Grazie per aver letto! Buona serializzazione.

Fonte: https://www.freecodecamp.org

#kotlin #jetpack 

Juned Ghanchi

1621508255

Kotlin App Development Company in India, Hire Kotlin Developers

We are a prime Kotlin app developer in India. We build and provide the best personalized Android apps, migration services, ongoing maintenance, and management.

We have the most efficient Kotlin developers that build ultramodern, interactive, and secure mobile apps. The technologies we use to create the most advanced Kotlin apps are AR/VR, AI/ML, IoT, etc.

Hire Kotlin app developers in India. Meet us, and we will help you meet all of your technology requirements.

#kotlin app development company india #hire kotlin developers india #kotlin app development company #hire kotlin developers #kotlin development agency #kotlin app programmers

Desmond Ivana

1602569524

The E-Scooters Wave Is Coming: Steer Your Business To Success

E-scooters are becoming more and more familiar. The compactness, coupled with the skill of evading jam-packed traffics, makes the fast-paced world lean towards this micro-mobility innovation. Besides, with COVID-19 propelling the need for safety and privacy, you do not have drivers in an E-scooters ecosystem! With the system being entirely automated, people can smart-lock and unlock E-scooters without any hassle.

Various top manufacturers are spending quality hours exhaustively on their R&D to shift from fuel-led automobiles to electric power-generating vehicles. Although people hesitate to make investments when it comes to buying an e-vehicle, using such vehicles for commuting is no big deal. If you’re an entrepreneur aiming to launch an Uber for E-Scooters app, now is the time to roll up your sleeves as E-scooters are being legalized in numerous countries, including New York.

Now, let’s discuss the remunerative advantages of E-scooters and why entrepreneurs needn’t hesitate to initiate their E-scooter App development.

Lucrative Benefits of E-Scooters

Outplay traffic effortlessly: One of the main concerns of people worldwide is not reaching the destination on time due to prolonged traffic. With four-wheelers becoming more predominant, the situation is steeping towards the worsening phase. With its compact nature, E-scooters can help people sail past traffic without a sweat. This way, people conserve and utilize their time efficiently.

The environmental impact: As simple as it may sound, automobiles pollute the environment on a massive scale. It is high-time people raise their concerns against environmental degradation. E-scooters are the best alternatives from the environmental perspective. These scooters run on a 500W electric motor, eliminating any form of pollution.

Inexpensive in every aspect: The maintenance and fuel costs of automobiles is way too high as vehicles get older. However, with an E-scooter, all it takes is a rechargeable battery with less or no maintenance at all. Moreover, entrepreneurs get to enhance their profits seamlessly, even after providing economical rides to passengers. There’s only an initial investment cost that an entrepreneur needs to take care of.

The 5-Step Workflow of an E-Scooters App

While building a smartphone application, it is essential to focus on the platform’s workflow. An E-scooter app with a user-friendly architecture and immersive workflow can create an instant impact among the audience. Let’s discuss the simple yet intuitive 5-step workflow here,

  • Users register with the platform and locate E-scooters nearby by enabling their location preferences.

  • Users choose their best-suited E-scooters based on numerous metrics like pricing, battery capacity, ratings, etc.

  • Users unlock the vehicle by scanning the QR code. They initiate their trip and drive towards their destination.

  • Upon reaching the destination, users park the E-scooters securely and smart-lock the vehicle.

  • The app displays the total fare with a detailed breakdown. Users pay the amount via a multitude of payment gateways and share their experience in the form of ratings & reviews.

Features that make the E-Scooter app stand apart

Apps like Lime, Bird, etc., have already set a benchmark when it comes to the E-Scooter app market. You need USPs to lure customer attention. Some of the unique elements worth-considering include,

  • QR scanning - To initiate and terminate rides.

  • In-app wallet - To pay for rides effortlessly.

  • Multi-lingual support - To access the app in the customers’ preferred language.

  • Schedule bookings - To book rides well-in-advance.

  • In-app chat/call - To establish a connection between the support team and users.

  • VoIP-based Call masking - To mask users’ contact details.

  • Geofencing - To map virtual boundaries and keep an eye on E-scooters.

Capitalize on the growing market

Establishing your E-Scooters Rental app at the spur of the moment is highly essential if you wish to scale your business in the shortest possible time. Some of the reasons to initiate your app development right away include,

The unexplored market: The E-Scooter market is still in its nascent stages. Rolling out an app with the right feature-set and approach can help you yield unrestricted revenue.

Competitors are experiencing massive growth: Apps like Lime, Bird, etc., witness unprecedented growth in the past few years. Lime was valued at $2.4 billion in 2019. On the other hand, Bird has spread across 100 cities in Europe. With competitors reaping profits, it is high-time entrepreneurs needn’t hesitate to invest in this business opportunity.

The ‘E’ shift among customers: People are gradually moving towards e-vehicles as a measure to conserve time and environment. By rolling out an on-demand app for E-scooters that is economical, people will inevitably turn towards your platform for the daily commute.

Conclusion

In this modern world, saving time and energy is the need of the hour. Add to that the indispensable role of conserving the environment. E-scooters cater to all these aspects comprehensively. Make the most out of the situation and have no second thoughts about initiating your E-Scooter app development.

#uber for e-scooters #e-scooter app development #e-scooter app #e-scooter rental app #uber like app for e-scooters #uber for e-scooters app

Autumn  Blick

Autumn Blick

1593253920

Jetpack Compose: Twitter UI

He used Flutter (which is an amazing tool btw for building cross platform apps) — with just one day of work, 1500 lines of code. That’s beyond impressive (specially the fact that Flutter can be hosted on CodePen as well).

So with similar constraints, I wanted to try out Jetpack Compose. I followed the CodePen example (as closely as I could) and this is the result:

Complete source code:

The App

There are three screens in this app

Home Screen

Profile Screen

Compose Screen

App State

Before we get to the screens — take a look at app state model, which will be used for navigation and theming. I also added some helpers for navigating to individual screens & for checking theme.

Models

There are two models — both data classes. The Tweet model is annotated with _@Model _as we update this model from our composed functions to update view state. User stays the same, hence it’s not annotated.

#kotlin #android #jetpack-compose #android-app-development #jetpack

Jeromy  Lowe

Jeromy Lowe

1598743860

JetPack Compose 🏹 — State Management

State Management in Android is a complex concept and to know the reason you have to first understand the architectural design of Android and to learn why it’s the key requirement to manage state. The Marcelo Benites article Managing State in Android defines the best description of the state:

The state is an object that is connected/subscribed to one or more widgets, contains data, and eager to update the widgets from that data. If there’s any change happens in data, it notifies all widgets to whom it’s connected. The values of the state are changed at runtime.

#jetpack-compose #jetpack #state #android #kotlin