【发布时间】:2018-10-19 14:31:44
【问题描述】:
在具有 TextField 或 TextFormField 的 Flutter 应用程序中,文本可以在第一次输入数据时重复。
当第一次输入按键时,在一个已经预先填充了文本的字段中,文本会重复,然后您的按键被附加。
我在我的三星 Galaxy S7、S8 和 S9(仅限我必须测试的设备)上遇到了这种情况。这不会发生在模拟器(Galaxy Nexus9 和 Pixel 2)中。
如果我在字段末尾放置一个空格,则不会发生此问题,但是,如果我在预填充字段的中间点按(使用控制器或 initialValue)并按下某个键,则会发生此问题。
这是一个准系统源代码示例:
class SampleTextFormPage extends StatefulWidget {
@override
State<StatefulWidget> createState() => new _SampleTextFormPage();
}
class _SampleTextFormPage extends State<SampleTextFormPage> {
final _scaffoldKey = new GlobalKey<ScaffoldState>();
TextEditingController _txtController;
@override
void initState() {
super.initState();
_txtController = TextEditingController(text:'Using Controller');
}
@override
Widget build(BuildContext context) { Scaffold scaffold = new Scaffold(
key: _scaffoldKey,
appBar: new AppBar(
title: new Text('Text Entry',
style: const TextStyle(
color: Colors.white)
),
backgroundColor: Colors.indigo
),
body: Column(children: [
//field 1
TextField(
autocorrect: false,
autofocus: true,
controller: _txtController,
),
//field 2
TextFormField(
autocorrect: false,
autofocus: true,
initialValue: 'Using initialValue',
)
])
);
return scaffold;
}
}
注意:我使用的是最新版本的 Flutter,并且已经恢复到多个版本的 Flutter(一直到支持 Dart 2 的第一个版本),但这个问题仍然存在。
【问题讨论】:
-
你找到解决办法了吗?我也遇到了同样的问题
-
MrQwerty,抱歉回复晚了。使用 Flutter 1.5 帮助改善了一些问题,但还没有完全解决。但是,对于典型的词来说,这似乎很好,但是,在到达顶级域(例如 .com)时,输入网站地址会导致同样的问题。我在 S9 和 S9 Note 上对此进行了测试。