如何将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
相关产品推荐
相关产品推荐

