Flutter iOS 登录表单AutofillGroup密码框触发自动填充跳转邮箱框问题
解决方案
这个是Flutter框架针对iOS系统自动填充逻辑适配的常见问题,可按以下步骤逐一排查修复:
- 给
AutofillGroup组件显式配置onDisposeAction: AutofillContextAction.commit,强制iOS系统在表单填写完成后保留自动填充上下文,避免输入框焦点异常跳转 - 给两个TextField分别配置唯一的
key,同时补充textInputAction属性明确输入跳转顺序:邮箱输入框配置textInputAction: TextInputAction.next,密码输入框配置textInputAction: TextInputAction.done - 邮箱输入框的
autofillHints同时补充AutofillHints.username,iOS系统的密码填充逻辑优先匹配username+password的字段组合,仅配置email会导致系统无法正确关联账户和密码的配对关系 - 密码输入框显式配置
enableSuggestions: true,即使开启了obscureText也需要保留建议开关,iOS的密码填充能力依赖该属性开启
修正后可运行的代码示例
Scaffold( body: SafeArea( child: AutofillGroup( // 新增自动填充上下文提交配置 onDisposeAction: AutofillContextAction.commit, child: Container( margin: const EdgeInsets.all(16.00), child: Column( children: [ TextField( // 新增唯一标识key key: const Key('email_field'), decoration: const InputDecoration( alignLabelWithHint: true, label: Text('Email'), ), // 补充username类型hint适配iOS填充逻辑 autofillHints: const [ AutofillHints.email, AutofillHints.username, ], // 配置输入后跳转下一个输入框 textInputAction: TextInputAction.next, ), TextField( // 新增唯一标识key key: const Key('password_field'), decoration: const InputDecoration( alignLabelWithHint: true, label: Text('Password'), ), obscureText: true, // 显式开启建议开关 enableSuggestions: true, autofillHints: const [ AutofillHints.password, ], // 配置输入后完成输入 textInputAction: TextInputAction.done, ), ], ), ), ), ), );
注意:修改后需要完全卸载原有App重新安装运行,iOS系统会缓存旧的自动填充字段配置,热重载/热重启不会更新系统级的缓存配置。
内容的提问来源于stack exchange,提问作者Yoann Picquenot
相关产品推荐
相关产品推荐

