如何在 Flutter Web 上正确使 TextFields 与自动填充一起使用?

dar*_*ekm 6 flutter flutter-web

这段代码以前似乎可以工作,但是现在我无法让网络上的自动填充工作。Chrome 会在网址栏上显示一个小键,让用户保存密码(尽管没有大的保存密码弹出窗口),但它对重新访问页面没有任何影响。

代码:

class LoginPage extends StatefulWidget {
  @override
  _LoginPageState createState() => _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {


  final userNameController = TextEditingController();
  final passController = TextEditingController();
  String errorText = '';

  @override
  void initState() {
    super.initState();

  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
 
      body: Center(
        child: AutofillGroup(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              loginPageTextField('Username', userNameController),
              SizedBox(height: 20),
              loginPageTextField('Password', passController, isPassword: true),
              SizedBox(height: 10),
              Container(
                child: Padding(
                  padding: const EdgeInsets.all(15.0),
                  child: Text(errorText,
                      style: TextStyle(fontSize: 12, color: Colors.red)),
                ),
              ),
         
       ElevatedButton(
                      child: Text('Log in',
                          style: TextStyle(fontWeight: FontWeight.bold)),
      
                      onPressed: () async {
                     (...))
                      },
                    )
            ],
          ),
        ),
      ),
    );
  }

  Container loginPageTextField(
      String placeholder, TextEditingController controller,
      {bool isPassword = false}) {
    return Container(
      width: 220,
      height: 40,
      child: TextField(
          keyboardType:
              (isPassword) ? TextInputType.text : TextInputType.name,
          onEditingComplete: (isPassword)
              ? () {
                  TextInput.finishAutofillContext();
                }
              : () {},
          autofillHints:
              isPassword ? [AutofillHints.password] : [AutofillHints.username],
          obscureText: isPassword ? true : false,
          textAlignVertical: TextAlignVertical.center,
          style: TextStyle(fontSize: 13),
          textAlign: TextAlign.center,
          decoration: _textFieldStyle(placeholder),
          controller: controller),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

最有趣的是我可以发誓它以前有效。当用户指出无法保存凭据时才意识到事实并非如此。尝试过的事情:

  • 将 TextFields 移动为直接嵌入到 AutofillGroup 中,而不是外部小部件中,
  • 添加/删除各种键盘类型,
  • 更改为 TextFormField,
  • 使用AutofillHints.newPassword而不是.password在传球场上
  • 在不同浏览器中测试

似乎没有任何效果 - 未显示“保存密码”弹出窗口,并且在访问该页面时未填写/建议登录详细信息。浏览器确认凭据的唯一方式是 Chrome 网址栏上的小键。

请帮忙!