对于任何类型的提示,我根本无法使 Flutter 自动填充工作。我复制了 Flutter 的示例代码,稍作修改。
bool isSameAddress = true;
final TextEditingController email = TextEditingController();
final TextEditingController billingAddress1 = TextEditingController();
final TextEditingController billingAddress2 = TextEditingController();
final TextEditingController creditCardNumber = TextEditingController();
final TextEditingController creditCardSecurityCode = TextEditingController();
final TextEditingController phoneNumber = TextEditingController();
@override
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
const Text('Email'),
AutofillGroup(
child: Column(
children: <Widget>[
TextField(
controller: email,
autofillHints: <String>[AutofillHints.email],
),
],
),
),
const Text('Billing address'),
Checkbox(
value: isSameAddress,
onChanged: (bool newValue) {
setState(() { isSameAddress = newValue; });
},
),
// Again the address fields are grouped together for the same reason.
if (!isSameAddress) AutofillGroup(
child: Column(
children: <Widget>[
TextField(
controller: billingAddress1,
autofillHints: <String>[AutofillHints.streetAddressLine1],
),
TextField(
controller: billingAddress2,
autofillHints: <String>[AutofillHints.streetAddressLine2],
),
],
),
),
const Text('Credit Card Information'),
// The credit card number and the security code are grouped together as
// some platforms are capable of autofilling both fields.
AutofillGroup(
child: Column(
children: <Widget>[
TextField(
controller: creditCardNumber,
autofillHints: <String>[AutofillHints.creditCardNumber],
),
TextField(
controller: creditCardSecurityCode,
autofillHints: <String>[AutofillHints.creditCardSecurityCode],
),
],
),
),
const Text('Contact Phone Number'),
// The phone number field can still be autofilled despite lacking an
// `AutofillScope`.
TextField(
controller: phoneNumber,
autofillHints: <String>[AutofillHints.telephoneNumber],
),
],
);
}
Run Code Online (Sandbox Code Playgroud)
但是没有为任何类型的提示显示自动填充下拉菜单。我在设备上打开了自动填充服务(使用 Google 的自动填充服务),并且自动填充本身适用于其他应用程序。
代码有什么问题?是否缺少导致禁用自动填充的任何内容?
注意:我使用 Flutter 1.20.4 和 Android 10
我缺少的是这个迁移https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects。值得注意的是,您的 MainActivity 需要扩展 io.flutter.embedding.android.FlutterActivity 而不是 io.flutter.app.FlutterActivity。
此外,正如您已经提到的,您需要在系统设置中配置自动填充服务。
工作示例代码:
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: Text("Login"),
),
body: AutofillGroup(
child: Column(
children: [
TextField(
autofillHints: [AutofillHints.email],
keyboardType: TextInputType.emailAddress,
),
TextField(
autofillHints: [AutofillHints.password],
keyboardType: TextInputType.text,
),
],
)));
Run Code Online (Sandbox Code Playgroud)
用户名而不是电子邮件的工作方式应该类似。
| 归档时间: |
|
| 查看次数: |
2662 次 |
| 最近记录: |