flutter_secure_keyboard
移动安全键盘,可防止键盘记录器攻击和屏幕截图。
屏幕截图
| 字母数字 |
数字 |
 |
 |
入门
要使用此插件,请在您的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