Flutter 按“完成”后,文本字段中写入的文本消失
我在我的应用程序中使用一个文本字段来写评论,当用户键入文本并按下按钮时,文本应该写入数据库。然而,我有一个问题,那就是当我写下文本,然后按完成或从键盘返回,文本消失,然后没有评论要添加。即使在按“完成”或“返回”后,是否仍可以在文本字段中保存文本值Flutter 按“完成”后,文本字段中写入的文本消失,flutter,textfield,Flutter,Textfield,我在我的应用程序中使用一个文本字段来写评论,当用户键入文本并按下按钮时,文本应该写入数据库。然而,我有一个问题,那就是当我写下文本,然后按完成或从键盘返回,文本消失,然后没有评论要添加。即使在按“完成”或“返回”后,是否仍可以在文本字段中保存文本值 String _text; final formKey = GlobalKey<FormState>(); Form( key: formKey, child: Column(children: <Widget&g
String _text;
final formKey = GlobalKey<FormState>();
Form(
key: formKey,
child: Column(children: <Widget>[
TextFormField(
autocorrect: false,
decoration: InputDecoration(labelText: "Text:"),
onSaved: (str) => _text = str,
)
]));
然后将参数中的_text变量作为键值传递。不确定输入消失的原因,但可以使用TextEditingController并将该控制器传递给TextField。 然后使用controller.text访问TextField的值 这里有一个小例子
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
String databaseText;
TextEditingController controller = TextEditingController();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: TextField(
controller: controller,
onEditingComplete: () {
databaseText = controller.text;
print(databaseText);
},
),
),
),
);
}
}
尝试在InputDecoration中修改contentPadding。例如:
contentPadding: EdgeInsets.symmetric(horizontal: 2, vertical: 0)
相应的颤振错误报告如下所示 有,用户,问: 因此,使用StatefulWidget的原因是,即使在重建过程中,状态也会被保留,因此我可以使用它来保存我的TextEditingController 这是正确的吗 以及: 确切地说:- 一般来说,在无状态Widget/InheritedWIdget中只创建原语。对于其他一切,你都需要一个状态 因此,这似乎是官方的答案:如果您创建的不是原语,那么您将需要一个状态。使用TextEditingController,并记住在构建方法之外的其他地方初始化它。