1677876240
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:
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.
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 .
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.
Confuso? 😕
Illustriamolo con un esempio:
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:
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:
⚠️ Se riscontri errori, assicurati che le versioni inserite siano corrette
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):
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
)
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>).
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.
Grazie per aver letto! Buona serializzazione.
Fonte: https://www.freecodecamp.org
#kotlin #jetpack
1677876240
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:
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.
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 .
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.
Confuso? 😕
Illustriamolo con un esempio:
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:
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:
⚠️ Se riscontri errori, assicurati che le versioni inserite siano corrette
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):
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
)
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>).
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.
Grazie per aver letto! Buona serializzazione.
Fonte: https://www.freecodecamp.org
#kotlin #jetpack
1621508255
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
1602569524
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
1593253920
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:
There are three screens in this app
Home Screen
Profile Screen
Compose Screen
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.
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
1598743860
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