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

如何将Future<DateTime>转为DateTime?遇.then调用报错求助

解决方案

错误原因

你的代码里then方法的参数语法有误:(value)){多了一个闭合括号,这会导致语法解析错误,触发“Function expressions can't be named”提示。

修正方案1:修复then语法并使用回调

DateTime fileLastModified = DateTime.timestamp();

File(file.path).lastModified().then((value) {
  fileLastModified = value;
  // 转换完成后调用toString()
  print(fileLastModified.toString());
});

修正方案2:使用async/await(更易读的异步写法)

因为lastModified()返回Future<DateTime>,你可以在异步函数中用await直接获取DateTime值:

// 需在async修饰的函数内执行
void fetchFileLastModified() async {
  DateTime fileLastModified = DateTime.timestamp();
  // await直接将Future<DateTime>转为DateTime
  fileLastModified = await File(file.path).lastModified();
  // 使用转换后的结果
  print(fileLastModified.toString());
}

注意事项

  • Dart变量名规范建议使用小驼峰(如fileLastModified而非FileLastModified),避免与类名混淆;
  • 由于文件操作是异步的,必须通过回调或await等待结果返回,不能直接同步获取DateTime值。

内容的提问来源于stack exchange,提问作者DktPhl2018

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:55:56