我有一个与其连接的文本字段TextEditingController()。在onChanged:回调中,我执行文本检查以仅允许时间输入。当在 iOS 上运行CupertinoTextfield并且其行为符合预期时,每次输入光标都会移动,因此下一个数字位于正确的位置,因此输入 1000 将得到 10:00。当在网络或 Android 上运行Material Textfield时,问题是当光标停留在第一个位置时文本向后显示,因此输入 1000 将导致 00:01 ..我尝试启用autofocus: true,但没有帮助。我尝试过textDirection: TextDirection.ltr,但也没有修复。我还尝试了另一篇文章中的解决方案,抓取控制器选择并将其重新应用到选中的文本上,但它也没有帮助。我缺少为 Material Textfield 设置什么?一如既往,非常感谢您的时间和帮助。
这是小部件:
Expanded(
flex: 2,
child: kIsWeb
? TextField(
keyboardType: TextInputType.numberWithOptions(),
textDirection: TextDirection.ltr,
autofocus: true,
controller: monMorOp,
onChanged: (value) {
TextSelection previousSelection =
monMorOp.selection;
monMorOp.text = validateTimeFormat(value);
monMorOp.selection = previousSelection;
},
)
: Platform.isIOS
? CupertinoTextField(
keyboardType:
TextInputType.numberWithOptions(),
controller: monMorOp,
onChanged: (value) {
monMorOp.text = validateTimeFormat(value);
},
)
: TextField(
keyboardType: …Run Code Online (Sandbox Code Playgroud)