【问题标题】:Flutter web Include autocompleteFlutter web 包含自动完成功能
【发布时间】:2020-06-19 21:24:00
【问题描述】:

我在flutter web中创建了一个登录表单,当我登录时,chrome会检测到输入的密码,但只提供保存密码,而用户名保持空白。

Google 建议使用以下 HTML 表单,以便凭据管理器检测需要存储的凭据。

<form id="signup" method="post">
 <input name="email" type="text" autocomplete="username email">
 <input name="display-name" type="text" autocomplete="name">
 <input name="password" type="password" autocomplete="new-password">
 <input type="submit" value="Sign Up!">
</form>

在我的表单中,我同时使用了电子邮件和用户名,但 chrome 凭据管理器仍然无法检测到用户名。

我们如何在 Flutter Web 中创建带有自动完成标签的表单?

【问题讨论】:

  • github 中存在一个问题。所以可能需要一些时间来解决这个问题。关注这个issue
  • 希望他们也能添加网络支持
  • 问题附加了一个 platform-web 标签,这意味着它将被处理。查看该问题中的最后一条评论... :)
  • 奇怪的是,用最新的flutter master channel框架,autocomplete字段设置正确,但是chrome还是不识别,有没有人试过这个?

标签: google-chrome flutter flutter-web


【解决方案1】:

Flutter 现在支持自动填充(密码、电子邮件、用户名等) ☑️ 合并的拉取请求示例:https://github.com/flutter/flutter/pull/52126

例子:

 @override
  Widget build(BuildContext context) {
    return AutofillGroup(
      child: Column(
        children: <Widget>[
          TextField(controller: username, autofillHints: [AutofillHints.username]),
          Checkbox(
            value: isNewUser,
            onChanged: (bool newValue) {
              setState(() { isNewUser = newValue; });
            },
          ),
          if (isNewUser) TextField(controller: newPassword, autofillHints: [AutofillHints.newPassword]),
          if (isNewUser) TextField(controller: repeatNewPassword, autofillHints: [AutofillHints.newPassword]),
          if (!isNewUser) TextField(controller: password, autofillHints: [AutofillHints.password]),
        ],
      ),
    );
  }

您可能需要切换到devmaster 频道(flutter channel master)。

【讨论】:

  • 它是为网络实现的吗?此处的示例:api.flutter.dev/flutter/widgets/AutofillGroup-class.html ... 似乎没有自动填充任何内容(对于桌面 Chrome)
  • 它应该适用于 Flutter Web,但对我个人而言,它非常有问题。我在 GitHub 上创建了一个问题:github.com/flutter/flutter/issues/61301。也许您可以投票并评论您的问题。
  • 如果控制器是您传递给外部小部件的参数(即 TextFormField 是接收控制器的外部小部件)怎么办?我正在尝试 autofillHints: [AutofillHints[controller]] 其中控制器是一个变量,但它不接受它
  • @user3808307 我认为您应该创建一个自定义实现,例如:class MyCustomController { final TextEditingController controller; final Iterable&lt;String&gt;? autofillHints; const MyCustomController( this.controller, this.autofillHints, ); }
  • 迄今为止,autoFillHints 参数不适用于 Flutter Web (2.2.3)
猜你喜欢
  • 1970-01-01
  • 2011-09-20
  • 2020-05-20
  • 1970-01-01
  • 2012-04-26
  • 2018-10-07
  • 2022-08-15
  • 2011-08-05
  • 2013-10-06
相关资源
最近更新 更多