【问题标题】:Instance of <Contact> in FlutterFlutter 中 <Contact> 的实例
【发布时间】:2021-07-10 07:11:06
【问题描述】:

我正在使用contacts_service: ^0.6.0 包,我想打印我的电话簿中的电话号码,但它正在打印 的实例而不是实际的电话号码。

This is my phones screenshot

这是我在调试面板中的输出。

I/flutter ( 8457): [Instance of 'Contact', Instance of 'Contact'].

这是我的代码:

`

_getContacts() async {
    List<Contact> _contacts =
    (await ContactsService.getContacts(withThumbnails: false)).toList();
    setState(() {
      contacts.addAll(_contacts);
      print(contacts);
    });
  }`

【问题讨论】:

    标签: android firebase flutter contacts


    【解决方案1】:

    flutter中有两种访问联系人的方式。

    1. Using contact_service plugin
    2. Using mobile_number 1.0.4 plugin

    注意:mobile_number 插件仅适用于 Android,因为 iOS 不支持获取 sim 卡的手机号码。

    【讨论】:

    • 正如您在手机屏幕截图中看到的那样,我在列表中获取了电话号码,但我需要该号码才能在不同的地方使用它,所以请您向我解释一下如何使用contact_service插件解决这个问题
    • 分享你项目的示例代码,我会从我这边检查一下
    【解决方案2】:

    试试这个

    _getContacts() async {
        Future<List<Contact>> futureContacts = ContactsService.getContacts(withThumbnails: false)
            .then((value) => value.map((e) => Contact.fromMap(e.toMap())).toList());
        var contacts = await futureContacts.then((value) => value.map((e) => e.toMap()).toList());
        print(contacts);
      }
    

    【讨论】:

    • 使用此代码删除手机中的内容(列表中的姓名和电话号码)。
    【解决方案3】:

    因为您打印的是实例本身,而不是其中的数据。因此,要在 Contact Instance 中打印数据,您需要从中提取数据。例如:

    _getContacts() async {
     List<Contact> _contacts =
     (await ContactsService.getContacts(withThumbnails: false)).toList();
     setState(() {
       contacts.addAll(_contacts);
       for(var i=0; i<contacts.length; i++){
         print(contacts[i].displayName);
       }
     });
    }
    

    【讨论】:

    • 非常感谢@Aloysius,它对我有用,但是你有一些语法错误,所以请编辑它们,以便我给你打勾。 for(var i=0; i&lt;_contacts.length; i++){ print(contacts[i].phones.first.value); }
    猜你喜欢
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 2023-01-19
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多