Page 2 of 5 — browse earlier tutorials on Android development, Kotlin, Jetpack Compose, and Flutter.
Build a production-ready Jetpack Compose login screen with MVVM: StateFlow for UI state, SharedFlow for one-time events, Hilt dependency injection, and a clean 4-layer architecture.
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.
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 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.
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.
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.