Стоит ли использовать каркас на каждом экране? Что такое лучшие практики при использовании Topbar, Bottombar, ящика и т.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Стоит ли использовать каркас на каждом экране? Что такое лучшие практики при использовании Topbar, Bottombar, ящика и т.

Сообщение Anonymous »

Я пишу приложение для Android Pure в Compose, и я использую каркас на каждом экране для реализации Topbar, Bottombar, Fab и т. Д. Лот, но нигде не нашел ответа, даже JetPack Compose Sample Приложения не предоставляют ничего о лучших практиках для создания приложения в JetPack Compose.
Пожалуйста, может ли кто -нибудь помочь мне. < /p>
Мой код выглядит так, как это < /p>
MainActivity < /p>
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContent {
PasswordManagerApp()
}
}
}

@Composable
fun PasswordManagerApp() {

val mainViewModel: MainViewModel = hiltViewModel()
val navController = rememberNavController()
val systemUiController = rememberSystemUiController()
val scaffoldState = rememberScaffoldState()
val coroutineScope = rememberCoroutineScope()

Theme(
darkTheme = mainViewModel.storedAppTheme.value
) {

Scaffold(
scaffoldState = scaffoldState,
snackbarHost = { scaffoldState.snackbarHostState }
) {

Box(modifier = Modifier) {

AppNavGraph(
mainViewModel = mainViewModel,
navController = navController,
scaffoldState = scaffoldState
)

DefaultSnackbar(
snackbarHostState = scaffoldState.snackbarHostState,
onDismiss = { scaffoldState.snackbarHostState.currentSnackbarData?.dismiss() },
modifier = Modifier.align(Alignment.BottomCenter)
)

}

}
}
}
< /code>
Экран 1: < /p>
@Composable
fun LoginsScreen(
...
) {

...

Scaffold(
topBar = {
HomeTopAppBar(
topAppBarTitle = LoginsScreen.AllLogins.label,
onMenuIconClick = {},
switchState = viewModel.switch.value,
onSwitchIconClick = { viewModel.setSwitch(it) },
onSettingsIconClick = {navigateToSettings()}
)
},
scaffoldState = scaffoldState,
snackbarHost = { scaffoldState.snackbarHostState },
floatingActionButton = {
MyFloatingBtn(
onClick = { navigateToNewItem() }
)
},
drawerContent = {
//MyDrawer()
},
bottomBar = {
MyBottomBar(
navController = navController,
currentRoute = currentRoute,
navigateToAllLogins = navigateToAllLogins,
navigateToAllCards = navigateToAllCards,
navigateToAllOthers = navigateToAllOthers,
)

},
floatingActionButtonPosition = FabPosition.End,
isFloatingActionButtonDocked = false,

) {

Box(modifier = Modifier.fillMaxSize()) {

Column(
verticalArrangement = Arrangement.Top,
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.fillMaxSize()
.padding(bottom = 48.dp)
.verticalScroll(scrollState)
) {...}

}

}
< /code>
Экран 2: < /p>
@Composable
fun CardsScreen(
...
) {

...

Scaffold(
topBar = {
HomeTopAppBar(
topAppBarTitle = CardsScreen.AllCards.label,
onMenuIconClick = {},
switchState = viewModel.switch.value,
onSwitchIconClick = { viewModel.setSwitch(it) },
onSettingsIconClick = {navigateToSettings()}
)
},
floatingActionButton = {
MyFloatingBtn(
onClick = { navigateToNewItem() })
},
drawerContent = {
//MyDrawer()
},
bottomBar = {
MyBottomBar(
navController = navController,
currentRoute = currentRoute,
navigateToAllLogins = navigateToAllLogins,
navigateToAllCards = navigateToAllCards,
navigateToAllOthers = navigateToAllOthers,
)
},
floatingActionButtonPosition = FabPosition.End,
isFloatingActionButtonDocked = false
) {

Column(
verticalArrangement = Arrangement.Top,
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.fillMaxSize()
.padding(bottom = 48.dp)
.verticalScroll(scrollState)
) {...}

}


Подробнее здесь: https://stackoverflow.com/questions/690 ... using-topb
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»