如何解决飞镖的未来?

时间:2020-05-28 09:48:41

标签: flutter dart

我需要在Flutter上读写文件。

写入有效,但无法读取,或者我认为这不起作用,因为终端输出为flutter: Instance of 'Future<String>'

这是什么意思?

这是代码:

Future<String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}

Future<File> get _localFile async {
final path = await _localPath;
return File('$path/hello.txt');
}

Future<File> writeHello() async {
final file = await _localFile;

// Write the file.
return file.writeAsString('HelloWorld');
}

Future<String> readHello() async {
try {
final file = await _localFile;

// Read the file.
return await file.readAsString();

} catch (e) {
// If encountering an error, return 0.
return "Can't read";
  }
}
.
.
.
writeHello();
print(readHello());

2 个答案:

答案 0 :(得分:5)

Future << strong> String >类型为Future,因此您需要解决将来。您可以在打印前await或使用.then()来解决Future。

正在使用

String data = await readHello();
print(data);

使用.then()

readHello().then((data){ //resolve the future and then print data
  print(data); 
});

注意:由于您已经在第1行等待,因此无需在第2行在此处添加额外的“等待”。

Future<String> readHello() async {
try {
final file = await _localFile; //Line 1
// Read the file.
return await file.readAsString(); //Line 2
} catch (e) {
// If encountering an error, return 0.
return "Can't read";
  }
}

答案 1 :(得分:1)

现在我明白了,我理解你说的我谢谢你!

我创建了一个混合了writeread的新函数。 问题是我在无法使用async的程序主体中调用了await函数,我应该在其他async函数中调用它们以正确地处理它们。

我解决了这个问题:

void _RWHello(String text) async {
writeHello();
print(await readHello());
}
.
.
.
 _RWHello("HelloWorld");