Почему, когда я добавляю ошибку import runtime.getValue, «у делегата должен быть метод getValue(Nothing?, KProperty*>)» ⇐ Android
Почему, когда я добавляю ошибку import runtime.getValue, «у делегата должен быть метод getValue(Nothing?, KProperty*>)»
Я новичок и изучаю основы Android с помощью Compose, в частности проект поиска рейсов https://developer.android.com/codelabs/ ... ght-search, здесь вам нужно добавить поиск аэропортов по базе. Я создал базу данных, сделал дао, но не понимаю, почему в этом коде не получается получить список аэропортов: ГлавныйЭкран()
... импортировать androidx.compose.runtime.Composable импортировать androidx.compose.runtime.collectAsState импортировать androidx.compose.runtime.getValue импортировать androidx.compose.runtime.mutableStateListOf импортировать androidx.compose.runtime.remember ... @Композитный веселый главный экран( модификатор: Модификатор = Модификатор, viewModel: MainViewModel = viewModel (фабрика = MainViewModel.factory) ) { val content = помните {mutableStateListOf() } val searchText от viewModel.searchText.collectAsState() val isSearching с помощью viewModel.isSearking.collectAsState() val AirportList от viewModel.airportList.collectAsState(emptyList()) Строительные леса( топБар = { AppTopBar() } ) { Столбец( модификатор = модификатор .padding(оно) .fillMaxSize() ) { AppSearchBar( модификатор = Модификатор .fillMaxWidth() .padding(16.дп), текст поиска = текст поиска, isSearching = isSearching, Список аэропортов = Список аэропортов, Модель просмотра = Модель просмотра ) ЛенивыйКолумн { ... } } } } @OptIn(ExperimentalMaterial3Api::class) @Композитный забавный AppSearchBar( модификатор: Модификатор = Модификатор, searchText: Строка, isSearching: логическое значение, Список аэропортов: Список, модель просмотра: MainViewModel ) { Панель поиска( запрос = текст поиска, onQueryChange = viewModel::onSearchTextChange, onSearch = viewModel::onSearchTextChange, активный = isSearching, onActiveChange = {viewModel.onToggleSearch() }, заполнитель = { Text("Входной рейс") }, LeadIcon = { Icon(Icons.Default.Search, contentDescription = null) }, модификатор = модификатор .fillMaxWidth() .padding(16.dp) ) { ЛенивыйКолумн { items(airportList) { аэропорт -> Текст( текст = аэропорт.название, модификатор = ... ) } } } } ... MainViewModel() класс MainViewModel( частный вал в аэропортуДао: AirportDao, частный вал в любимомДао: ФаворитДао ) : ViewModel() { частный val _isSearching = MutableStateFlow (ложь) val isSearching = _isSearching.asStateFlow() частный val _searchText = MutableStateFlow("") вал searchText = _searchText.asStateFlow() частный val _airportList = MutableStateFlow(emptyFlow()) val AirportList = _airportList.asStateFlow() частный val _favoriteList = MutableStateFlow(favoriteDao.getFavorites()) val FavoriteList = _favoriteList.asStateFlow() весело onSearchTextChange (текст: String) { _searchText.value = текст _airportList.value = AirportDao.getSearchResults(текст) } весело onToggleSearch() { _isSearching.value = !_isSearching.value если (!_isSearching.value) { onSearchTextChange("") } } сопутствующий объект { val фабрика: ViewModelProvider.Factory = viewModelFactory { инициализатор { val application = (это [APPLICATION_KEY] как FlightSearchApplication) MainViewModel(application.database.airportDao(), application.database.favoriteDao()) } } } } в mainscreen() выдается ошибка в строке val AirportList с помощью viewModel.airportList.collectAsState(emptyList())
Я пытался написать тот же код, что и в предыдущей лабораторной работе, но не понимаю концепцию потока
Я новичок и изучаю основы Android с помощью Compose, в частности проект поиска рейсов https://developer.android.com/codelabs/ ... ght-search, здесь вам нужно добавить поиск аэропортов по базе. Я создал базу данных, сделал дао, но не понимаю, почему в этом коде не получается получить список аэропортов: ГлавныйЭкран()
... импортировать androidx.compose.runtime.Composable импортировать androidx.compose.runtime.collectAsState импортировать androidx.compose.runtime.getValue импортировать androidx.compose.runtime.mutableStateListOf импортировать androidx.compose.runtime.remember ... @Композитный веселый главный экран( модификатор: Модификатор = Модификатор, viewModel: MainViewModel = viewModel (фабрика = MainViewModel.factory) ) { val content = помните {mutableStateListOf() } val searchText от viewModel.searchText.collectAsState() val isSearching с помощью viewModel.isSearking.collectAsState() val AirportList от viewModel.airportList.collectAsState(emptyList()) Строительные леса( топБар = { AppTopBar() } ) { Столбец( модификатор = модификатор .padding(оно) .fillMaxSize() ) { AppSearchBar( модификатор = Модификатор .fillMaxWidth() .padding(16.дп), текст поиска = текст поиска, isSearching = isSearching, Список аэропортов = Список аэропортов, Модель просмотра = Модель просмотра ) ЛенивыйКолумн { ... } } } } @OptIn(ExperimentalMaterial3Api::class) @Композитный забавный AppSearchBar( модификатор: Модификатор = Модификатор, searchText: Строка, isSearching: логическое значение, Список аэропортов: Список, модель просмотра: MainViewModel ) { Панель поиска( запрос = текст поиска, onQueryChange = viewModel::onSearchTextChange, onSearch = viewModel::onSearchTextChange, активный = isSearching, onActiveChange = {viewModel.onToggleSearch() }, заполнитель = { Text("Входной рейс") }, LeadIcon = { Icon(Icons.Default.Search, contentDescription = null) }, модификатор = модификатор .fillMaxWidth() .padding(16.dp) ) { ЛенивыйКолумн { items(airportList) { аэропорт -> Текст( текст = аэропорт.название, модификатор = ... ) } } } } ... MainViewModel() класс MainViewModel( частный вал в аэропортуДао: AirportDao, частный вал в любимомДао: ФаворитДао ) : ViewModel() { частный val _isSearching = MutableStateFlow (ложь) val isSearching = _isSearching.asStateFlow() частный val _searchText = MutableStateFlow("") вал searchText = _searchText.asStateFlow() частный val _airportList = MutableStateFlow(emptyFlow()) val AirportList = _airportList.asStateFlow() частный val _favoriteList = MutableStateFlow(favoriteDao.getFavorites()) val FavoriteList = _favoriteList.asStateFlow() весело onSearchTextChange (текст: String) { _searchText.value = текст _airportList.value = AirportDao.getSearchResults(текст) } весело onToggleSearch() { _isSearching.value = !_isSearching.value если (!_isSearching.value) { onSearchTextChange("") } } сопутствующий объект { val фабрика: ViewModelProvider.Factory = viewModelFactory { инициализатор { val application = (это [APPLICATION_KEY] как FlightSearchApplication) MainViewModel(application.database.airportDao(), application.database.favoriteDao()) } } } } в mainscreen() выдается ошибка в строке val AirportList с помощью viewModel.airportList.collectAsState(emptyList())
Я пытался написать тот же код, что и в предыдущей лабораторной работе, но не понимаю концепцию потока
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
У делегата недвижимости должен быть метод «getValue (ничего?, Kproperty*>) '
Anonymous » » в форуме Android - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-