4

以下の例では、ユーザーのパスワードを読み取りますが、プレーンテキストでエコーしますが、これを回避する方法はありますか?

Future<String> promptPassword() {
  var completer = new Completer<String>();
  var stream = new StringInputStream(stdin);
  stdout.writeString("Warning: Password will be displayed here until I find a better way to do this.\n");
  stdout.writeString("Watch your back...\n");
  stdout.writeString("GitHub password for $gituser: ");
  stream.onLine = () {
    var str = stream.readLine();
    stdin.close();
    completer.complete(str);
  };
  return completer.future;
}
4

3 に答える 3

6

これは現在実装されています。

Stdin.echoModeを参照してください

import 'dart:io';

void main() {
  print('Enter password: ');
  stdin.echoMode = false;
  var password = stdin.readLineSync();  
  // Do something with password...
}
于 2013-12-18T20:15:12.433 に答える
4

これは、ttyコントロールがdart:ioに追加されるまで不可能です。それまでの間、私はお勧めします:

stty -echo
dart ./password.dart
stty echo

ここでバグを開きました:https ://code.google.com/p/dart/issues/detail?id = 8190

于 2013-01-29T21:05:11.110 に答える
0

dart DCliパッケージは、これを行うためのオプションを提供します。

https://pub.dev/packages/dcli

import 'package:dcli/dcli.dart';

void main() {
  var password = ask('password', hidden: true);
}
于 2022-02-05T20:56:05.017 に答える