Screen structure
Screens in Nimaz are organized underpresentation/screens/ with feature-based grouping:
Screen anatomy
A typical Nimaz screen follows this pattern:presentation/screens/home/HomeScreen.kt
Key patterns
- Navigation callbacks: Screens receive navigation actions as lambda parameters
- ViewModel integration: ViewModels are injected using
hiltViewModel() - State collection: UI state is collected using
collectAsState() - Scaffold usage: Most screens use
Scaffoldfor consistent layout
Home screen example
The home screen demonstrates complex UI composition:presentation/screens/home/HomeScreen.kt
Screen composition patterns
Extracting composables
Break down complex screens into smaller composable functions:Countdown timer
The home screen features an animated countdown timer:presentation/screens/home/HomeScreen.kt
State management
Screens observe state from ViewModels:Preview support
All screens and components include preview functions:Responsive layouts
Screens adapt to different content sizes:Related
- Components - Reusable UI components
- Theming - Theme and styling system
- Navigation - Navigation architecture