Warm tip: This article is reproduced from serverfault.com, please click

dart-contact_services getContactsForPhone 返回未来

(dart - contact_services getContactsForPhone returing Future instead of String)

发布于 2021-03-10 20:09:01

我正在尝试Contact使用该功能getContactsForPhone

   getName()async{
    number = '123-456-7890'
    return await ContactsService.getContactsForPhone(number).then((value) =>  value.elementAt(0).displayName.toString());
  }

但我得到Future<dynmaic>而不是.displayName哪个应该是字符串

Questioner
Anan Saadi
Viewed
0
Naslausky 2021-03-31 22:30:59

你正在混合使用 Futures 的两种方式:

  • 你可以使用await关键字来等待结论。
  • 你可以使用该then方法在 Future 结束时进行回调。

你需要选择一个并坚持下去。使用await总是更可取的,因为它使代码更具可读性并避免了一些回调地狱

在你的情况下:

Future<String> getName() async {
    number = '123-456-7890'
    Iterable<Contact> myIterable = await ContactsService.getContactsForPhone(number);
    List<Contact> myList = myIterable.toList();
    return myList[0].displayName.toString()
  }

哪个应该返回你想要的 DisplayName。

记住还要await从外部使用关键字,无论你在何处调用此函数。

你可以在此处阅读有关 Future 和异步代码的更多信息