为何这段Dart代码始终返回Instance of 'Future<dynamic>'?
问题原因与解决方法
问题根源
所有标记为async的函数都会自动返回Future类型,不管你内部return的是什么值。你在main函数里直接调用consultaDataArquivo(),没有用await等待它完成,所以打印出来的就是Future对象,而非实际解析后的EXIF数据。另外你代码里用了同步的readAsBytesSync(),没必要和await搭配,换成异步的readAsBytes()更符合异步流程的设计。
修正后的代码
import 'dart:io'; import 'package:exif/exif.dart'; Future<Map<String, IfdTag>> consultaDataArquivo(File pathArquivo) async { final dadosDoArquivo = await pathArquivo.readAsBytes(); // 替换为异步读取方法 var dadosExif = await readExifFromBytes(dadosDoArquivo); return dadosExif; } void main() async { // 给main函数添加async关键字 var exifData = await consultaDataArquivo(File('/home/rcaliman/Downloads/_DSC8982.JPG')); print(exifData); }
关键修改点
- 给
main函数加上async关键字,这样就能在内部使用await等待异步操作完成 - 调用
consultaDataArquivo()时添加await,获取实际的EXIF数据而非Future对象 - 将同步的
readAsBytesSync()替换为异步的readAsBytes(),配合await使用,避免阻塞事件循环
内容的提问来源于stack exchange,提问作者Rodrigo Caliman
相关产品推荐
相关产品推荐

