flutter_secure_keyboard

移动安全键盘,可防止键盘记录器攻击和屏幕截图。

屏幕截图

字母数字 数字
103331966-8f5c8380-4aab-11eb-8098-f16c9417c2b7 103331973-9a171880-4aab-11eb-8b34-fdf388d14044

入门

要使用此插件,请在您的pubspec.yaml文件中将flutter_secure_keyboard添加为依赖项。例如:

dependencies:
  flutter_secure_keyboard: ^1.0.1+3

示例

class WithSecureKeyboardExample extends StatefulWidget {
  @override
  _WithSecureKeyboardExampleState createState() => _WithSecureKeyboardExampleState();
}

class _WithSecureKeyboardExampleState extends State<WithSecureKeyboardExample> {
  final secureKeyboardController = SecureKeyboardController();

  final passwordEditor = TextEditingController();
  final passwordTextFieldFocusNode = FocusNode();

  final pinCodeEditor = TextEditingController();
  final pinCodeTextFieldFocusNode = FocusNode();

  @override
  Widget build(BuildContext context) {
    return WithSecureKeyboard(
      controller: secureKeyboardController,
      child: Scaffold(
        appBar: AppBar(title: Text('with_secure_keyboard_example')),
        body: _buildContentView()
      ),
    );
  }

  Widget _buildContentView() {
    // We recommend using the ListView widget to prevent widget overflows.
    return ListView(
      padding: const EdgeInsets.all(8.0),
      children: [
        Padding(
          padding: const EdgeInsets.only(bottom: 12.0),
          child: _buildPasswordTextField()
        ),
        _buildPinCodeTextField()
      ],
    );
  }

  Widget _buildPasswordTextField() {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Text('Password'),
        TextFormField(
          controller: passwordEditor,
          focusNode: passwordTextFieldFocusNode,
          // We recommended to set false to prevent the soft keyboard from opening.
          enableInteractiveSelection: false,
          obscureText: true,
          onTap: () {
            secureKeyboardController.show(
              type: SecureKeyboardType.Alphanumeric,
              textFieldFocusNode: passwordTextFieldFocusNode,
              initText: passwordEditor.text,
              hintText: 'password',
              onConfirmKeyPressed: (List<int> charCodes) {
                passwordEditor.text = String.fromCharCodes(charCodes);
              }
            );
          },
        ),
      ],
    );
  }

  Widget _buildPinCodeTextField() {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Text('PinCode'),
        TextFormField(
          controller: pinCodeEditor,
          focusNode: pinCodeTextFieldFocusNode,
          // We recommended to set false to prevent the soft keyboard from opening.
          enableInteractiveSelection: false,
          obscureText: true,
          onTap: () {
            secureKeyboardController.show(
              type: SecureKeyboardType.Numeric,
              textFieldFocusNode: pinCodeTextFieldFocusNode,
              initText: pinCodeEditor.text,
              hintText: 'pinCode',
              onConfirmKeyPressed: (List<int> charCodes) {
                pinCodeEditor.text = String.fromCharCodes(charCodes);
              }
            );
          },
        ),
      ],
    );
  }
}

WithSecureKeyboard

参数 描述
控制器* 用于控制安全键盘的控制器。
child* 用于安全键盘的小部件。
keyboardHeight 设置键盘高度的参数。
backgroundColor 设置键盘背景颜色的参数。
stringKeyColor 设置键盘字符键(字母数字、数字等)颜色的参数。
actionKeyColor 设置键盘操作键(Shift、Backspace、Clear等)颜色的参数。
confirmKeyColor 设置键盘确认键颜色的参数。
keyTextStyle 设置键盘按键文本样式的参数。
inputTextStyle 设置键盘输入文本样式的参数。

SecureKeyboardController

功能 描述
isShowing 安全键盘是否已打开。
类型 指示安全键盘的类型。
show 显示安全键盘。
hide 隐藏安全键盘。

SecureKeyboardController.show()

参数 描述
类型* 指定安全键盘的类型。
textFieldFocusNode 将获得焦点的FocusNode
initText 设置输入文本的初始值。
hintText 输入文本为空时显示的提示文本。
inputTextLengthSymbol 设置显示输入文本长度时使用的符号。
confirmKeyText 设置确认键的文本。
clearKeyText 设置清除键的文本。
obscuringCharacter 设置隐藏输入文本的安全字符。
maxLength 设置可以输入的文本的最大长度。
alwaysCaps 是否始终显示大写字符。
obscureText 是否将输入文本隐藏为安全字符。
onKeyPressed 按下按键时调用。
onCharCodesChanged 字符码更改时调用。
onConfirmKeyPressed* 按下确认键时调用。
onCloseKeyPressed 按下关闭键时调用。

GitHub

https://github.com/Dev-hwang/flutter_secure_keyboard