Я работаю над приложением Android Compose, которое отображает список поездов.
У меня есть экран A, на котором показан список поездов и экрана B, который отображает детали выбранного поезда.
Каждый экран имеет свой собственный ViewModel (используя HiltViewModel ()). и приносит список поездов через API. < /li>
Пользовательские нажатия на поезд. Принесите полные данные поезда? < /p>
На экране A перед навигацией и передайте данные B? ViewModel)? @Composable
fun TrainListScreen(navController: NavController, viewModel: TrainListViewModel = hiltViewModel()) {
val state by viewModel.trainList.collectAsState()
LazyColumn {
items(state.trains) { train ->
Text(
text = train.name,
modifier = Modifier.clickable {
navController.navigate("trainDetail/${train.number}")
}
)
}
}
}
< /code>
Навигационная настройка < /p>
NavHost(navController, startDestination = "trainList") {
composable("trainList") { TrainListScreen(navController) }
composable(
"trainDetail/{trainNumber}",
arguments = listOf(navArgument("trainNumber") { type = NavType.StringType })
) { backStackEntry ->
val trainNumber = backStackEntry.arguments?.getString("trainNumber") ?: ""
TrainDetailScreen(trainNumber)
}
}
< /code>
Экран B (подробная информация о поездке) < /p>
@Composable
fun TrainDetailScreen(
trainNumber: String,
viewModel: TrainDetailViewModel = hiltViewModel()
) {
val state by viewModel.trainDetail.collectAsState()
LaunchedEffect(trainNumber) {
viewModel.loadTrainDetail(trainNumber)
}
if (state.isLoading) {
CircularProgressIndicator()
} else {
Text("Train Name: ${state.train?.name}")
// show more details
}
}
< /code>
Какой экран должен нести ответственность за вызов API? Запущенным образом является ли правильный способ сделать API?
Подробнее здесь: https://stackoverflow.com/questions/796 ... ther-in-je
Когда я должен сделать вызов API во время навигации с одного экрана к другому в JetPack Compose (ViewModel на экран)? ⇐ Android
Форум для тех, кто программирует под Android
1751695206
Anonymous
Я работаю над приложением Android Compose, которое отображает список поездов.
У меня есть экран A, на котором показан список поездов и экрана B, который отображает детали выбранного поезда.
Каждый экран имеет свой собственный ViewModel (используя HiltViewModel ()). и приносит список поездов через API. < /li>
Пользовательские нажатия на поезд. Принесите полные данные поезда? < /p>
На экране A перед навигацией и передайте данные B? ViewModel)? @Composable
fun TrainListScreen(navController: NavController, viewModel: TrainListViewModel = hiltViewModel()) {
val state by viewModel.trainList.collectAsState()
LazyColumn {
items(state.trains) { train ->
Text(
text = train.name,
modifier = Modifier.clickable {
navController.navigate("trainDetail/${train.number}")
}
)
}
}
}
< /code>
Навигационная настройка < /p>
NavHost(navController, startDestination = "trainList") {
composable("trainList") { TrainListScreen(navController) }
composable(
"trainDetail/{trainNumber}",
arguments = listOf(navArgument("trainNumber") { type = NavType.StringType })
) { backStackEntry ->
val trainNumber = backStackEntry.arguments?.getString("trainNumber") ?: ""
TrainDetailScreen(trainNumber)
}
}
< /code>
Экран B (подробная информация о поездке) < /p>
@Composable
fun TrainDetailScreen(
trainNumber: String,
viewModel: TrainDetailViewModel = hiltViewModel()
) {
val state by viewModel.trainDetail.collectAsState()
LaunchedEffect(trainNumber) {
viewModel.loadTrainDetail(trainNumber)
}
if (state.isLoading) {
CircularProgressIndicator()
} else {
Text("Train Name: ${state.train?.name}")
// show more details
}
}
< /code>
Какой экран должен нести ответственность за вызов API? Запущенным образом является ли правильный способ сделать API?
Подробнее здесь: [url]https://stackoverflow.com/questions/79690806/when-should-i-make-an-api-call-while-navigating-from-one-screen-to-another-in-je[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия