繁体   English   中英

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

[英]how to use values from async functions in 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不是由func.dart(return_of_invalid_type)方法定义的Text

使用未来

例如

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

在媒体上查看此文章 您可以得到很好的理解。 对于异步函数,应使用Future类返回值。

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

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

先决条件

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

你可以做什么

  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;
     });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM