-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTopBarNav.kt
73 lines (69 loc) · 2.49 KB
/
TopBarNav.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.afzaln.funcompose.navigation.simple
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Settings
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.navigate
import androidx.navigation.compose.rememberNavController
import com.afzaln.funcompose.navigation.Screen
import com.afzaln.funcompose.navigation.getRoute
import com.afzaln.funcompose.ui.FunComposeTheme
@Composable
fun TopBarNavApp() {
val navController = rememberNavController()
val current by navController.currentBackStackEntryAsState()
FunComposeTheme {
// A surface container using the 'background' color from the theme
Surface(color = MaterialTheme.colors.background) {
Scaffold(
topBar = {
TopAppBar(
title = {
Text(current?.getRoute() ?: "")
},
actions = {
IconButton(
onClick = {
navController.navigate(Screen.Dashboard.route)
}
) {
Icon(imageVector = Icons.Default.Settings, contentDescription = null)
}
}
)
},
content = {
BasicNav(navController)
}
)
}
}
}
/**
* An existing navController can be passed to the NavHost.
* This functionality can be used to control and observe
* the backstack from outside of the NavGraph.
*/
@Composable
fun BasicNav(
navController: NavHostController,
) {
NavHost(
navController = navController,
startDestination = Screen.Profile.route
) {
composable(Screen.Profile.route) { Profile(navController) }
composable(Screen.Dashboard.route) { Dashboard() }
}
}