“非活动InputConnection上的beginBatchEdit”,在编辑TextFormField时
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“非活动InputConnection上的beginBatchEdit”,在编辑TextFormField时相关的知识,希望对你有一定的参考价值。
我正在尝试创建一种表单,用户可以使用简单的TextFormField更改其用户数据(例如,用户名,电子邮件等)。 TextFormField包含当前用户数据(例如,用户名),并且用户应该能够通过按“确认”按钮来更改文本并提交新输入。您可能会在代码示例中看到,在从Firebase接收数据(自定义“ UserData”对象)(可能不是最好的解决方案,但它可以正常工作)后,我已经需要一些解决方法来使用当前用户数据填充TextFormField猜)。
很遗憾,更改TextFormField内部的文本无法正常工作。 添加/删除每个字符之后,手机的键盘关闭。在我的调试控制台中,伴随着以下错误消息的出现:
W/IInputConnectionWrapper(19623): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper(19623): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper(19623): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper(19623): getSelectedText on inactive InputConnection
请在下面找到我的代码示例。我试图尽可能简化它,同时不遗漏潜在的错误源。
其他信息:我使用名为wc_form_validators的flutter插件进行FormField验证。变量“ generalNameValidator”在另一个文件中定义。但我认为您不必为此担心,因为它可以在我的应用程序的其他页面中正常工作。
class Edit extends StatefulWidget
@override
_EditState createState() => _EditState();
class _EditState extends State<Edit>
String newName = '';
bool isInit = false;
TextEditingController myNameController;
void _setFormfields()
myNameController = new TextEditingController(text: newName);
isInit = true;
@override
Widget build(BuildContext context)
final _formKey = GlobalKey<FormState>();
final user = Provider.of<User>(context);
return StreamBuilder<UserData>(
stream: DatabaseService(uid: user.uid).userStream,
initialData: UserData(uid: user.uid, name: "..."),
builder: (context, snapshot)
UserData userData = snapshot.data;
newName = userData.name;
// checks if app has already received UserData from Firebase
if (!isInit && newName != "...") _setFormfields();
return Scaffold(
body: Form(
key: _formKey,
child: Column(
children: <Widget>[
TextFormField(
onChanged: (value)
setState(() => newName = value);
,
validator: generalNameValidator,
controller: myNameController,
),
RaisedButton(
child: Text("CONFIRM"),
onPressed: ()
if (_formKey.currentState.validate())
setState(() => newName = myNameController.text);
print("new Name is: " + newName);
),
],
),
),
);
);
供参考:我已经花时间在this related stackoverflow discussion上,但是据我所知,没有哪一个分析工具真正适合我的问题。当然,我对颤振/飞镖的经验很少。
有人知道我的问题是什么原因以及如何解决?如果有任何详细问题或需要更多代码示例,请随时询问。
提前感谢。
这个固定的矿井。试试吧
在android清单文件中,将android:windowSoftInputMode
值更改为"adjustNothing"
以上是关于“非活动InputConnection上的beginBatchEdit”,在编辑TextFormField时的主要内容,如果未能解决你的问题,请参考以下文章