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