SuriDevs Logo

Latest Tutorials

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.

Production-Ready Networking in Flutter with DIO - Part 1: Foundation
Flutter DIO Networking API Dart

Production-Ready Networking in Flutter with DIO - Part 1: Foundation

Stop writing try-catch blocks everywhere. Build a networking layer that handles errors, parses responses, and doesn't embarrass you in production. Part 1 of a 3-part series covering DIO setup, configuration, and generic response handling.

MQTT in Android: Real-Time IoT with Jetpack Compose
Android MQTT IoT Kotlin Jetpack Compose

MQTT in Android: Real-Time IoT with Jetpack Compose

Building a smart home app that controls lights, sensors, and devices in real-time using MQTT and Kotlin.

Parallel API Calls in Kotlin: I Wasted 2 Seconds Per Screen Until I Fixed This
Android Kotlin Coroutines Flow Performance

Parallel API Calls in Kotlin: I Wasted 2 Seconds Per Screen Until I Fixed This

My dashboard was making 3 API calls sequentially. Users waited 3 seconds for no reason. Here's how async, Flow.zip, and Flow.combine actually differ.

Room Database in Android: What I Wish I Knew Before My First Production App
Android Room Database Kotlin Jetpack

Room Database in Android: What I Wish I Knew Before My First Production App

I built a QR scanner app and users wanted scan history. Raw SQLite was painful. Room fixed that. Here's what actually matters when using Room in production.