SuriDevs Logo

Latest Tutorials

Hands-on Android and Flutter tutorials from building real production apps. Covering Kotlin, Jetpack Compose, MVVM, Room, Coroutines, Riverpod, and more — with code you can actually use.

Change App Language in Android (Jetpack Compose) — Runtime Locale Switch
Android Jetpack Compose Kotlin Localization

Change App Language in Android (Jetpack Compose) — Runtime Locale Switch

Skip the Activity recreate hack. Use Android 13's per-app language API with an AppCompat backport — switch languages at runtime in Compose without losing state.

Jetpack Compose Layouts: When to Use Row, Column, Box & ConstraintLayout
Android Jetpack Compose UI Design Kotlin

Jetpack Compose Layouts: When to Use Row, Column, Box & ConstraintLayout

I've built production screens with all four layout types. Row, Column, and Box handle 90% of cases — but knowing when to reach for ConstraintLayout saves you from nested layout nightmares.

Jetpack Navigation 3 Migration: Type-Safe Routes & Nav2
Android Jetpack Compose Navigation Kotlin Architecture

Jetpack Navigation 3 Migration: Type-Safe Routes & Nav2

A practical guide to Jetpack Navigation 3 covering type-safe routes, bottom navigation with multiple back stacks, deep link handling, shared ViewModels, and step-by-step migration from Navigation 2.

Syncing State Across Multiple Providers in Riverpod: The Cart Problem Nobody Warns You About
Flutter Riverpod State Management Dart Architecture

Syncing State Across Multiple Providers in Riverpod: The Cart Problem Nobody Warns You About

User adds item to cart from Search screen. Cart updates. User goes back. Button still shows old state. Here's how I fixed state sync across multiple Riverpod providers without turning the codebase into spaghetti.

Production-Ready Networking in Flutter with DIO - Part 3: Clean API Calls
Flutter DIO Repository Pattern Clean Architecture Dart

Production-Ready Networking in Flutter with DIO - Part 3: Clean API Calls

The final piece: BaseApiService and repository pattern. Go from scattered try-catches to clean, type-safe API calls. Complete flow diagram and production checklist included.

Production-Ready Networking in Flutter with DIO - Part 2: Token Refresh
Flutter DIO Authentication Token Refresh Dart

Production-Ready Networking in Flutter with DIO - Part 2: Token Refresh

Automatic token refresh that doesn't fire 5 times when 5 requests fail. Here's how to handle auth properly with secure storage, interceptors, and race condition prevention.