从Future <Directory>函数

时间:2019-11-10 11:16:56

标签: flutter dart

所以基本上,我想从名为getTemporaryDirectory()的path_provider函数中检索目录,而我遇到了从名为getDir()的函数返回数据类型的问题,该函数应返回类型Directory变量,但返回动态类型

Directory tempDir;

Future<Directory> dire() async {
  Directory dire = await getTemporaryDirectory(); //!temporary directory 
  return dire;
}
getDir() async {
  Directory dir = await dire();
  return dir;
}

@override
  void initState() {
    tempDir = getDir();
  }

我得到的错误是: “未来(动态)”类型不是“目录”类型的子类型

2 个答案:

答案 0 :(得分:0)

您可能要考虑

Directory dir = (await dire()) as Directory;

注意:我对Dart的了解已经严重过时,也许我不应该在SO上回答有关它的问题

答案 1 :(得分:0)

您最好为getDir指定返回类型:

Future<Directory> getDir() async {

而且您无法等待 initState 中的值,因此必须使用回调:

  @override
  void initState() {
    super.initState();
    getDir().then((v) {
      setState(() {
        tempDir = v;
      });
    });
  }