Как оптимизировать получение контактов во Flutter с помощью Getx и реализовать кеширование для повышения производительноAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как оптимизировать получение контактов во Flutter с помощью Getx и реализовать кеширование для повышения производительно

Сообщение Anonymous »

Я реализовал получение контактов в своем приложении Flutter с помощью Getx. Однако этот процесс занимает много времени, поскольку на моем мобильном телефоне более 1500 контактов. Каждый раз, когда я получаю контакты, оно извлекает их все, что значительно замедляет работу приложения.
Я ищу предложения по оптимизации этого процесса. В частности, мне хотелось бы знать, поможет ли использование механизма кэширования, и если да, то как я могу эффективно его реализовать, чтобы ускорить получение контактов. В идеале я хотел бы загружать только часть контактов за раз, чтобы повысить производительность.
Что я пробовал:
Я реализовал следующий код для получения контактов с устройства, используя пакет flutter_contacts 1.1.9+2 и Getx для управления состоянием:

Код: Выделить всё

class PhoneBookController extends GetxController{
RxList filteredContacts = [].obs;
RxList allContacts = [].obs;
RxBool isLoading = true.obs;

@override
void onInit() {
super.onInit();
fetchContacts();
}

Future fetchContacts() async {
try {
isLoading.value = true;
// Check if the app has permission to access contacts
if (await FlutterContacts.requestPermission()) {
// Fetch contacts with properties (e.g., phone numbers) and photos
final contacts = await FlutterContacts.getContacts(
withProperties: true, withPhoto: true);
if (contacts.isNotEmpty) {
allContacts.value = contacts; // Store all fetched contacts
filteredContacts.value = contacts; // Initialize filtered contacts with all
} else {
Get.snackbar('No Contacts', 'No contacts found.');
}
} else {
// If permission is not granted, show an error message
Get.snackbar('Permission Denied', 'Please grant permission to access contacts.');
}
} catch (e) {
Get.snackbar('Error', 'Failed to fetch contacts.');
} finally{
isLoading.value = false;
}
}
}
Чего я ожидал:
Я ожидал, что код будет хорошо работать при получении контактов и сохранении их в списке. Однако, поскольку у меня на телефоне более 1500 контактов, каждый раз выбор всех контактов значительно замедляет работу приложения, особенно при доступе к ним через пользовательский интерфейс.
**
Что произошло на самом деле:**
Контакты извлекаются успешно, но этот процесс занимает много времени, поскольку каждый раз извлекаются все более 1500 контактов. Это влияет на производительность приложения и вызывает задержки. Мне нужен способ оптимизировать этот процесс, в идеале — путем постепенного кэширования или получения контактов.

Подробнее здесь: https://stackoverflow.com/questions/793 ... aching-for
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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