Mobile secure keyboard to prevent KeyLogger attack and screen capture

flutter_secure_keyboard

Mobile secure keyboard to prevent KeyLogger attack and screen capture.

Screenshots

Alphanumeric Numeric

Getting started

To use this plugin, add flutter_secure_keyboard as a dependency in your pubspec.yaml file. For example:

dependencies:
  flutter_secure_keyboard: ^1.0.1+3

Examples

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

Parameter Description
controller* Controller for controlling the secure keyboard.
child* A widget to have a secure keyboard.
keyboardHeight Parameters to set the keyboard height.
backgroundColor Parameters to set the keyboard background color.
stringKeyColor Parameters to set keyboard string key(alphanumeric, numeric..) color.
actionKeyColor Parameters to set keyboard action key(shift, backspace, clear..) color.
confirmKeyColor Parameters to set keyboard confirm key color.
keyTextStyle Parameters to set keyboard key text style.
inputTextStyle Parameters to set keyboard input text style.

SecureKeyboardController

Function Description
isShowing Whether the secure keyboard is open.
type Indicates the secure keyboard type.
show Show a secure keyboard.
hide Hide a secure keyboard.

SecureKeyboardController.show()

Parameter Description
type* Specifies the secure keyboard type.
textFieldFocusNode The FocusNode that will receive focus on.
initText Sets the initial value of the input text.
hintText The hint text to display when the input text is empty.
inputTextLengthSymbol Sets the symbol to use when displaying the input text length.
confirmKeyText Sets the confirm key text.
clearKeyText Sets the clear key text.
obscuringCharacter Sets the secure character to hide the input text.
maxLength Sets the maximum length of text that can be entered.
alwaysCaps Whether to always display uppercase characters.
obscureText Whether to hide input text as secure characters.
onKeyPressed Called when the key is pressed.
onCharCodesChanged Called when the character codes changed.
onConfirmKeyPressed* Called when the confirm key is pressed.
onCloseKeyPressed Called when the close key is pressed.

GitHub

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