В языке C# для этой цели существует глобальная системная переменная.
Environment.CommandLine
Это свойство обеспечивает доступ к имени программы и любым аргументам, указанным в командной строке при запуске текущего процесса.
Dart — это асинхронный язык. Он позволяет запускать процессы самостоятельно.
void main() {
task("foo", callback1);
task("baz", callback2);
}
Пакет задач.
void task(String name, action()) {
schedule();
addTask(name. action);
}
void schedule() {
// Here we start timer if it not started.
// This timer will get cmd line arguments
// And executes task specified in cmd line arguments
}
P.S.
Официальный ответ Dart Team: «Не планируется».
Я не могу понять: «Почему это возможно на других платформах через их библиотеки, а на платформе Dart это невозможно?».
Почему только через «основные» параметры, которые даже не гарантируют, что другие изоляты не заменят эти аргументы на суррогатные параметры, которые не являются реальными аргументами командной строки процесса ОС)?
Вот примеры:
Перейти на язык
func main() {
fmt.Println(len(os.Args), os.Args)
}
Язык ржавчины
fn main() {
let args = os::args();
println!("The first argument is {}", args[1]);
}
язык С#
class Sample {
public static void Main() {
Console.WriteLine();
String[] arguments = Environment.GetCommandLineArgs();
Console.WriteLine("GetCommandLineArgs: {0}", String.Join(", ", arguments));
}
}
Рубиновый язык
ARGV.each do|a|
puts "Argument: #{a}"
end
Язык Python
import sys
print(sys.argv)
PHP-язык
foreach($argv as $value)
{
echo "$value\n";
}
Язык Node.js
process.argv.forEach(function (val, index, array) {
console.log(index + ': ' + val);
});
P.S.
Опять же, я убежден, что эта платформа Dart не такая, как все остальные.
Это только мое мнение. Это ничего не меняет.
Спасибо, Гюнтер Цохбауэр, за заботу, но не нужно это редактировать.