如何在dart中使用异步函数中的值

时间:2019-08-20 08:41:25

标签: android flutter dart

我想在代码中使用字符串值,但无法这样做。请帮助,我是新来的。

// Database (db) is database sqlite
// Dog class has a String field name

Text func() async{
     var dog = await db.firstDog();
     return Text(dog.name);
}

根据方法Text的定义,返回类型Text不是func.dart(return_of_invalid_type)

3 个答案:

答案 0 :(得分:1)

使用未来

示例

Future<Text> func() async{
    String d = await getTest();
    return Text(d);
}

答案 1 :(得分:0)

在介质上选中此article。您可以得到很好的理解。 对于异步函数,应使用Future类来返回值。

Future<String> asyncFunc() async {
d = await db.firstDog();
return d.name;
}

然后使用此字符串设置TextView的文本

答案 2 :(得分:0)

先决条件

  • 请告诉我们此函数调用的放置位置(例如,在存储库或屏幕层中)

您可以做什么

  1. 您无需返回Text作为Widget,而只需返回Future<String>
Future<String> func() async {
     var dog = await db.firstDog();
     return dog.name;
}
  1. 假设您直接在屏幕或窗口小部件类中使用此功能,则可以执行此操作
Database db = new Database();
String _dogName;

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Center(
      child: Text(_dogName),
    ),
  );
}
void func() async {
     setState(() async {
         var dog = await db.firstDog();
         _dogName = dog.name;
     });
}