Код: Выделить всё
Column(
modifier = Modifier
.fillMaxSize()
.nestedScroll(nestedScrollConnection)
.background(Color.Transparent)
.verticalScroll(scrollState),
) {
// отступ сверху учитывая размеры верхней панельки TopBar
Spacer(
modifier = Modifier.height(with(density){maxTopHeightSpacer.toDp()} )
)
if (!LocalInspectionMode.current && navHostController != null) {
NestedNavigationMain(navHostController)
} else {
var state: FilmHubState by remember { mutableStateOf(FilmHubState()) }
FilmHubContent(state = state)
}
Код: Выделить всё
NestedNavigationMain(navController: NavHostController) {
val context = LocalContext.current
val viewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) { "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner" }
NavHost(
navController = navController,
startDestination = MainGraph
) {
navigation(
startDestination = Login
) {
composable{
FavoriteScreen(
vmMain = hiltViewModel(viewModelStoreOwner),
openInfoMovie = {movieId, countryDisplay, author->
navController.navigate(Info(movieId = movieId, countryDisplay = countryDisplay, author = author))
}
)
}
FavoriteContent(
modifier = Modifier,
state = state.value,
country = stateMain.value.country,
openInfoMovie = openInfoMovie,
loadMoreFavoriteFilms = { vmFavorite.onAction(FavoriteAction.LoadFavoriteMovieList)}
)
}
@Composable
fun FavoriteContentParent(
modifier: Modifier = Modifier,
state: FavoriteState,
country: ECountry = ECountry.UnitedStates,
openInfoMovie: (String, ECountry?, String) -> Unit = {movieId, countryDisplay, author ->},
loadMoreFavoriteFilms: () -> Unit = {},
) {
if (state.favoriteMovieList != null) {
MovieVerticalGrid(
modifier = modifier.heightIn(max = LocalAvailableHeight.current).fillMaxWidth(),
paddingValues = PaddingValues(horizontal = 40.dp),
isLoading = state.favoriteMovieList.isLoading,
endReached = state.favoriteMovieList.endReached,
movieList = state.favoriteMovieList.paginationData.values.toList(),
onItemClicked = {
with(state.favoriteMovieList.paginationData.entries.elementAt(it).value) {
openInfoMovie(this.id, this.countryDisplay, this.author)
}
},
loadMoreFilms = loadMoreFavoriteFilms,
)
} else {
Box(
modifier = Modifier
.background(Color.Green), // добавьте это ограничение
)Column {
Text(
modifier = Modifier.width(300.dp),
text = stringResourceChild(R.string.favorite_screen_text_info_no_favorite, country),
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.primary,
textAlign = TextAlign.Center
)
}
}
}
< /code>
У меня есть MainActivity, и у меня есть NavController. Внутри основного экрана у меня есть столбец с вертикалью. Мне нужно немного, как установлено в коробке. Веса (1F), который находится внутри детского экрана, чтобы установить его поле для полного экрана. Чем я могу централизовать текст внутри коробки к центральному пилому. Как рукайте ColumnScope с основного экрана на экран Childe, если я использую Navhost? Как я вижу, Navhost вырезал эту область, когда я пытаюсь поставить область в качестве переменной для FavoriteScreen. То же самое у меня есть, когда я использую CompositionLocalOf. Я думаю, что главная проблема, которую Navhost делает меня проблемой.
Подробнее здесь: https://stackoverflow.com/questions/797 ... composable
Мобильная версия