es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mi código no está completo para el número de contacto.

Cómo corregir el código de mi aplicación Flutter y utilizar un plugin:

  filterContacts() {
    setState(() {
      List<contact> _contacts = [];
      _contacts.addAll(contacts);
      if (searchController.text.isNotEmpty) {
        _contacts.retainWhere(
          (contact) {
            String searchTerm = searchController.text.toLowerCase().trim();
            String searchTermFlatten = flattenPhoneNumber(searchTerm);
            String contactName = contact.displayName.toString().toLowerCase();
            bool nameMatches = contactName.contains(searchTerm);
            if (nameMatches == true) {
              return true;
            }
            if (searchTermFlatten.isEmpty) {
              return false;
            }
            var phone = contact.phones.firstWhere((phn) {
              String phnFlattened = flattenPhoneNumber(phn);
              return phnFlattened.contains(searchTermFlatten);
            }, orElse: () => null);

            return phone != null;
          },
        );
        contactsFiltered = _contacts;
      }
    });
  }

Código en Flutter – cómo corregir mi aplicación y utilizar el plugin “contacts_service”. Si encuentras un problema, revisa esta imagen: https://i.stack.imgur.com/uih2D.jpg.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el código y utilizar el complemento contacts_service, sigue estos pasos:

    1. Importa el paquete contacts_service agregándolo a tu archivo pubspec.yaml y ejecutando flutter pub get:
      dependencies:
       contacts_service: ^0.4.6
      
    2. Importa el paquete contacts_service en tu archivo:
      import 'package:contacts_service/contacts_service.dart';
      
    3. Actualiza el método filterContacts() para utilizar el complemento contacts_service en lugar de la lista de contacts, como se muestra a continuación:
      filterContacts() async {
       setState(() {
         List<contact> _contacts = [];
         if (searchController.text.isNotEmpty) {
           _contacts = (await ContactsService.getContacts()).toList();
           _contacts.retainWhere(
             (contact) {
               String searchTerm = searchController.text.toLowerCase().trim();
               String searchTermFlatten = flattenPhoneNumber(searchTerm);
               String contactName = contact.displayName.toLowerCase();
               bool nameMatches = contactName.contains(searchTerm);
               if (nameMatches == true) {
                 return true;
               }
               if (searchTermFlatten.isEmpty) {
                 return false;
               }
               var phone = contact.phones.firstWhere(
                 (phn) {
                   String phnFlattened = flattenPhoneNumber(phn.value);
                   return phnFlattened.contains(searchTermFlatten);
                 },
                 orElse: () => null,
               );
               return phone != null;
             },
           );
           contactsFiltered = _contacts;
         } else {
           contactsFiltered = [];
         }
       });
      }
      
    4. Reemplaza contacts con contactsFiltered en el resto de tu código.

    El complemento contacts_service proporciona una forma más eficiente de recuperar y filtrar contactos, lo que solucionará el problema de rendimiento que estás experimentando.

Comments are closed.