我希望使用 Flutter 创建一个 Windows 可执行文件,以便在执行时能够接受命令参数并在 CMD 中打印结果:
commandtest.exe --type=csv
我写了这段代码:
import 'dart:io';
import 'package:args/args.dart';
void main(List<String> args) {
var parser = ArgParser()..addOption("type", abbr: 't', defaultsTo: 'default');
try {
final ArgResults argResults = parser.parse(args);
final String type = argResults['type'] as String;
stdout.writeln('Type: $type'); // print() doesn't work either
exit(0);
} on Exception catch (e) {
stderr.writeln("error on parsing args : $e");
exit(1);
}
}
这是我在 CMD 中的预期行为:
path/to/executable> mycommand.exe --type=csv
Type: csv
path/to/executable>
但目前,没有任何效果,当我运行命令时,我的 CMD 为空:
path/to/executable> mycommand.exe --type=csv
path/to/executable>
但是,我知道它是有效的,因为当我尝试这样的命令时:
mycommand.exe --type=csv > output.txt
output.txt 文件已创建,我的结果已正确推入其中。
我不明白问题出在哪里。请帮忙?
当您从 cmd 运行 Windows GUI 应用程序时,会发生您所显示的行为:这些不会将任何内容打印到 cmd 输出。他们仍然有一个标准输出,您可以按照您显示的方式重定向 - 但他们不会将其打印到控制台输出。
您可能使用
flutter create commandtest
来创建您的应用程序。这样,您就可以创建一个 cmake 项目,将应用程序构建为 Windows GUI 应用程序。
相反,使用
dart create commandtest
创建一个纯 Dart 应用程序。将您的代码复制到bin\commandtest.dart
。使用 dart compile exe bin\commandtest.dart
创建 exe。