Загрузите файл, одновременно коснувшись элементов ленивого столбца в Jetpack Compose. ⇐ Android
Загрузите файл, одновременно коснувшись элементов ленивого столбца в Jetpack Compose.
У меня есть список, и когда я касаюсь элемента, я хочу, чтобы файл, связанный с этим элементом, был загружен. Я написал код для загрузки файла, но у меня возникла проблема. Пользователь может коснуться нескольких элементов одновременно и захотеть загрузить их одновременно. Проблема с моим кодом в том, что когда я одновременно касаюсь нескольких элементов, операции загрузки мешают друг другу.
Класс ViewModel:
class BusinessViewModel(private val userRepository: UserRepository) : ViewModel() { val downloadSqliteDatabaseData: MutableState = mutableStateOf(State.Empty) весело downloadSqliteDatabase (файл: File?, businessId: Long) { viewModelScope.launch { userRepository.downloadSqliteDatabase(businessId).onStart { downloadSqliteDatabaseData.value = State.Loading }.ловить { downloadSqliteDatabaseData.value = State.Error("ОШИБКА", MyHttpStatusCode.NetworkError) }.собирать { downloadSqliteDatabaseData.value = когда (it.status) { HttpStatusCode.OK -> { пытаться { val данные: ByteArray = it.body() файл?.writeBytes(данные) Состояние.Успех("", it.status) } catch (например: исключение) { State.Error("ОШИБКА", MyHttpStatusCode.ConvertDataError) } } MyHttpStatusCode.InvalidUser -> { State.Error("ОШИБКА", it.status) } еще -> { State.Error("ОШИБКА", it.status) } } } } } } Функция создания:
val downloadSqliteDatabaseData по памяти {viewModel.downloadSqliteDatabaseData } DisposableEffect (downloadSqliteDatabaseData) { когда (downloadSqliteDatabaseData) { является State.Empty -> {} это State.Loading -> { //загрузкаDatabaseLoading.value = true } это State.Success -> { //downloadDatabaseLoading.value = false } это State.Error -> { println("Ошибка") //downloadDatabaseLoading.value = false } } onDispose { } } LazyColumn( состояние = lazyListState, модификатор = Модификатор.fillMaxSize(), HorizontalAlignment = Alignment.CenterHorizontally ) { itemsIndexed( предметы = бизнессписок, ключ = { _, элемент -> item.id }, ) { индекс, элемент -> Кликбокс( модификатор = Модификатор .padding(начало = 15.dp, конец = 15.dp) .fillMaxWidth() .height(120.dp), onClick = { val dbPath = Файл("test.txt") viewModel.downloadSqliteDatabase(dbPath, item.id) } ) { //.... } } }
У меня есть список, и когда я касаюсь элемента, я хочу, чтобы файл, связанный с этим элементом, был загружен. Я написал код для загрузки файла, но у меня возникла проблема. Пользователь может коснуться нескольких элементов одновременно и захотеть загрузить их одновременно. Проблема с моим кодом в том, что когда я одновременно касаюсь нескольких элементов, операции загрузки мешают друг другу.
Класс ViewModel:
class BusinessViewModel(private val userRepository: UserRepository) : ViewModel() { val downloadSqliteDatabaseData: MutableState = mutableStateOf(State.Empty) весело downloadSqliteDatabase (файл: File?, businessId: Long) { viewModelScope.launch { userRepository.downloadSqliteDatabase(businessId).onStart { downloadSqliteDatabaseData.value = State.Loading }.ловить { downloadSqliteDatabaseData.value = State.Error("ОШИБКА", MyHttpStatusCode.NetworkError) }.собирать { downloadSqliteDatabaseData.value = когда (it.status) { HttpStatusCode.OK -> { пытаться { val данные: ByteArray = it.body() файл?.writeBytes(данные) Состояние.Успех("", it.status) } catch (например: исключение) { State.Error("ОШИБКА", MyHttpStatusCode.ConvertDataError) } } MyHttpStatusCode.InvalidUser -> { State.Error("ОШИБКА", it.status) } еще -> { State.Error("ОШИБКА", it.status) } } } } } } Функция создания:
val downloadSqliteDatabaseData по памяти {viewModel.downloadSqliteDatabaseData } DisposableEffect (downloadSqliteDatabaseData) { когда (downloadSqliteDatabaseData) { является State.Empty -> {} это State.Loading -> { //загрузкаDatabaseLoading.value = true } это State.Success -> { //downloadDatabaseLoading.value = false } это State.Error -> { println("Ошибка") //downloadDatabaseLoading.value = false } } onDispose { } } LazyColumn( состояние = lazyListState, модификатор = Модификатор.fillMaxSize(), HorizontalAlignment = Alignment.CenterHorizontally ) { itemsIndexed( предметы = бизнессписок, ключ = { _, элемент -> item.id }, ) { индекс, элемент -> Кликбокс( модификатор = Модификатор .padding(начало = 15.dp, конец = 15.dp) .fillMaxWidth() .height(120.dp), onClick = { val dbPath = Файл("test.txt") viewModel.downloadSqliteDatabase(dbPath, item.id) } ) { //.... } } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Невозможно загрузить файл с помощью Crow C++ из-за ошибки сегментации.
Гость » » в форуме Javascript - 0 Ответы
- 0 Просмотры
-
Последнее сообщение Гость
-