Flutter Windows:点击按钮调用系统默认3D查看器打开指定FBX文件
解决方案:在Flutter Windows中调用默认程序打开本地FBX文件
你不需要把本地文件路径配置到pubspec.yaml里,因为这是磁盘上的独立文件,不是应用打包的资源。下面提供两种可行的实现方式:
方法一:使用Dart原生Process API(无第三方依赖)
直接调用Windows系统的cmd命令,通过start指令唤起默认关联程序打开目标文件,代码示例如下:
import 'dart:io'; void open3DModel() async { final targetPath = r'E:\Downloads\1.fbx'; // 原始字符串避免转义问题 try { // 调用cmd执行start命令,空引号用于兼容路径含空格的场景 await Process.run('cmd.exe', ['/c', 'start', '', targetPath]); } catch (e) { print('打开文件失败:$e'); // 这里可以添加UI层面的错误提示 } }
在按钮的onPressed中调用open3DModel()即可。
方法二:使用process_run包(简化跨平台操作)
如果你需要更简洁的跨平台调用方式,可以使用process_run包:
- 在
pubspec.yaml中添加依赖:
dependencies: process_run: ^0.12.4
- 实现代码:
import 'package:process_run/process_run.dart'; void openFbxViewer() async { final filePath = r'E:\Downloads\1.fbx'; try { // run命令会自动适配不同平台的系统调用 await run('start', ['', filePath], runInShell: true); } catch (e) { print('操作失败:$e'); } }
注意事项
- 确保目标文件路径正确,且当前用户有读取该文件的权限
- 如果路径包含空格,必须保留
start后的空引号,否则命令会解析错误 - 可以提前通过
File(targetPath).exists()判断文件是否存在,避免无效调用
内容的提问来源于stack exchange,提问作者Harshana
相关产品推荐
相关产品推荐

