SuriDevs Logo

Tutorials — Page 2

Page 2 of 5 — browse earlier tutorials on Android development, Kotlin, Jetpack Compose, and Flutter.

Jetpack Compose Bottom Navigation Back Stack Fix & Sealed Routes
Android Jetpack Compose Navigation Architecture Kotlin

Jetpack Compose Bottom Navigation Back Stack Fix & Sealed Routes

Fix the Jetpack Compose bottom navigation back stack problem with popUpTo, saveState, and restoreState — plus sealed class routes, nested graphs, and a Nav2 vs Nav3 comparison.

Jetpack Compose Dark Mode: Three-Way Theme Switching Guide
Android JetpackCompose Kotlin DarkMode MaterialTheme

Jetpack Compose Dark Mode: Three-Way Theme Switching Guide

The real-world Jetpack Compose dark mode implementation: three-way user override, ViewModel persistence across restarts, AppCompatDelegate sync for XML views, and a custom brand color system beyond M3's 30 roles.

CameraX Feature Groups: HDR + 60 FPS Compatibility
Android CameraX CameraAPI

CameraX Feature Groups: HDR + 60 FPS Compatibility

CameraX 1.6's Feature Group API lets you check if camera feature combinations work before enabling them. No more crashing when you try to combine HDR with 60 FPS on unsupported devices.

Flutter Riverpod: Loading, Error & Success States Guide
Flutter Riverpod State Management Dart AsyncValue

Flutter Riverpod: Loading, Error & Success States Guide

Every Flutter screen has three states: loading, error, success. Most apps get this wrong. Here's the production pattern I use with Riverpod — including the mistakes I shipped and what I do differently now.

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.