added main app composable with navgraph
This commit is contained in:
		
							parent
							
								
									10202fa693
								
							
						
					
					
						commit
						11d3d5c5d2
					
				
					 1 changed files with 81 additions and 0 deletions
				
			
		
							
								
								
									
										81
									
								
								app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,81 @@ | ||||||
|  | package be.ugent.sel.studeez | ||||||
|  | 
 | ||||||
|  | import android.content.res.Resources | ||||||
|  | import androidx.compose.foundation.layout.padding | ||||||
|  | import androidx.compose.material.* | ||||||
|  | import androidx.compose.runtime.Composable | ||||||
|  | import androidx.compose.runtime.ReadOnlyComposable | ||||||
|  | import androidx.compose.runtime.remember | ||||||
|  | import androidx.compose.runtime.rememberCoroutineScope | ||||||
|  | import androidx.compose.ui.Modifier | ||||||
|  | import androidx.compose.ui.platform.LocalConfiguration | ||||||
|  | import androidx.compose.ui.platform.LocalContext | ||||||
|  | import androidx.compose.ui.unit.dp | ||||||
|  | import androidx.navigation.NavGraphBuilder | ||||||
|  | import androidx.navigation.NavHostController | ||||||
|  | import androidx.navigation.compose.NavHost | ||||||
|  | import androidx.navigation.compose.composable | ||||||
|  | import androidx.navigation.compose.rememberNavController | ||||||
|  | import be.ugent.sel.studeez.common.snackbar.SnackbarManager | ||||||
|  | import be.ugent.sel.studeez.navigation.StudeezDestinations | ||||||
|  | import be.ugent.sel.studeez.screens.splash.SplashScreen | ||||||
|  | import be.ugent.sel.studeez.ui.theme.StudeezTheme | ||||||
|  | import kotlinx.coroutines.CoroutineScope | ||||||
|  | 
 | ||||||
|  | @Composable | ||||||
|  | fun StudeezApp() { | ||||||
|  |     StudeezTheme { | ||||||
|  |         Surface(color = MaterialTheme.colors.background) { | ||||||
|  |             val appState = rememberAppState() | ||||||
|  | 
 | ||||||
|  |             Scaffold( | ||||||
|  |                 snackbarHost = { | ||||||
|  |                     SnackbarHost( | ||||||
|  |                         hostState = it, | ||||||
|  |                         modifier = Modifier.padding(8.dp), | ||||||
|  |                         snackbar = { snackbarData -> | ||||||
|  |                             Snackbar(snackbarData, contentColor = MaterialTheme.colors.onPrimary) | ||||||
|  |                         } | ||||||
|  |                     ) | ||||||
|  |                 }, | ||||||
|  |                 scaffoldState = appState.scaffoldState | ||||||
|  |             ) { innerPaddingModifier -> | ||||||
|  |                 NavHost( | ||||||
|  |                     navController = appState.navController, | ||||||
|  |                     startDestination = StudeezDestinations.SPLASH_SCREEN, | ||||||
|  |                     modifier = Modifier.padding(innerPaddingModifier) | ||||||
|  |                 ) { | ||||||
|  |                     studeezGraph(appState) | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @Composable | ||||||
|  | fun rememberAppState( | ||||||
|  |     scaffoldState: ScaffoldState = rememberScaffoldState(), | ||||||
|  |     navController: NavHostController = rememberNavController(), | ||||||
|  |     snackbarManager: SnackbarManager = SnackbarManager, | ||||||
|  |     resources: Resources = resources(), | ||||||
|  |     coroutineScope: CoroutineScope = rememberCoroutineScope() | ||||||
|  | ) = | ||||||
|  |     remember(scaffoldState, navController, snackbarManager, resources, coroutineScope) { | ||||||
|  |         StudeezAppstate(scaffoldState, navController, snackbarManager, resources, coroutineScope) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | @Composable | ||||||
|  | @ReadOnlyComposable | ||||||
|  | fun resources(): Resources { | ||||||
|  |     LocalConfiguration.current | ||||||
|  |     return LocalContext.current.resources | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) { | ||||||
|  | 
 | ||||||
|  |     composable(StudeezDestinations.SPLASH_SCREEN) { | ||||||
|  |         SplashScreen(openAndPopUp = { route, popUp -> appState.navigateAndPopUp(route, popUp) }) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Reference in a new issue
	
	 lbarraga
						lbarraga