You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何这段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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 08:06:27