Flutter 颤振键盘完成按钮导致文本字段内容取消显示
我有一个带有图标的文本字段,我想在文本字段中保存值,告诉我按下图标确认值,而不是键盘上的“完成”按钮 单击“完成”关闭键盘后,文本字段中的文本将消失 当点击图标时,结果为空值 **尝试使用行为主体消除控制器来解决此问题,但不起作用,因为单击图标后文本字段中的值仍然存在,因为不再存在控制器Flutter 颤振键盘完成按钮导致文本字段内容取消显示,flutter,controller,keyboard,textfield,Flutter,Controller,Keyboard,Textfield,我有一个带有图标的文本字段,我想在文本字段中保存值,告诉我按下图标确认值,而不是键盘上的“完成”按钮 单击“完成”关闭键盘后,文本字段中的文本将消失 当点击图标时,结果为空值 **尝试使用行为主体消除控制器来解决此问题,但不起作用,因为单击图标后文本字段中的值仍然存在,因为不再存在控制器 class ForumCard extends StatelessWidget { final Forums choosentype; final ForumServices forumServices
class ForumCard extends StatelessWidget {
final Forums choosentype;
final ForumServices forumServices;
final Firestore firestore = Firestore();
final TextEditingController _textF = TextEditingController();
ForumCard({Key key, @required this.choosentype, this.forumServices})
: super(key: key);
@override
Widget build(BuildContext context) {
final AuthService authService = Provider.of<AuthService>(context);
final user$ = authService.user.where((user) => user != null);
final commentslist = List.from(choosentype.comments);
return Container(
width: MediaQuery.of(context).size.width * 0.9,
child: Card(
elevation: 100,
color: Colors.white,
child: Center(
child: StreamBuilder<FirebaseUser>(
stream: user$,
builder: (context, snapshot) {
final currentUser = snapshot.data;
if (!snapshot.hasData) {
return Text("nooooooooodata");
}
return Column(
children: <Widget>[
StreamBuilder<String>(
stream: forumServices.text,
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Container();
}
final text = snapshot.data;
return choosentype.type == "question"
? Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: TextField(
decoration: InputDecoration(
hintText: "Write a comment",
),
onSubmitted: (String text) {
forumServices.addtext(text);
// I am adding here in a stream was trying to eliminate controller but doesnot work as the value in the textfield remains there after click on the icon as there is no longer controller.
},
controller: _textF,
onEditingComplete: null,
),
),
IconButton(
icon: Icon(Icons.comment),
onPressed: () {
commentslist.add({
"0": currentUser.uid,
"1": currentUser.displayName,
"2": _textF.text,
});
print(commentslist);
Firestore.instance
.collection('forums')
.document(choosentype.uid)
.updateData(
{"comments": commentslist},
);
},
),
],
)
class ForumCard扩展了无状态小部件{
最终论坛选择类型;
最终论坛服务论坛服务论坛;
最终Firestore Firestore=Firestore();
最终文本编辑控制器_textF=文本编辑控制器();
ForumCard({Key Key,@required this.choosentype,this.forumServices})
:super(key:key);
@凌驾
小部件构建(构建上下文){
最终AuthService AuthService=Provider.of(上下文);
最终用户$=authService.user.where((用户)=>user!=null);
final commentslist=List.from(选择Type.comments);
返回容器(
宽度:MediaQuery.of(context).size.width*0.9,
孩子:卡片(
标高:100,
颜色:颜色,白色,
儿童:中心(
孩子:StreamBuilder(
流:用户$,
生成器:(上下文,快照){
最终currentUser=snapshot.data;
如果(!snapshot.hasData){
返回文本(“noooodata”);
}
返回列(
儿童:[
StreamBuilder(
流:forumServices.text,
生成器:(上下文,快照){
如果(!snapshot.hasData){
返回容器();
}
最终文本=snapshot.data;
return choosentype.type==“问题”
?行(
主轴对准:
MainAxisAlignment.spaceBetween,
横轴对齐:
CrossAxisAlignment.start,
儿童:[
扩大(
孩子:TextField(
装饰:输入装饰(
hintText:“写评论”,
),
提交:(字符串文本){
forumServices.addtext(text);
//我在这里添加了一个流,试图消除控制器,但不起作用,因为单击图标后文本字段中的值仍然存在,因为不再有控制器。
},
控制器:_textF,
onEditingComplete:空,
),
),
图标按钮(
图标:图标(Icons.comment),
已按下:(){
commentslist.add({
“0”:currentUser.uid,
“1”:currentUser.displayName,
“2”:,
});
打印(评论列表);
Firestore.instance
.收藏('论坛')
.document(选择type.uid)
更新数据(
{“评论”:评论列表},
);
},
),
],
)
将小部件转换为StatefulWidget
以保持TextFieldController
将小部件转换为StatefulWidget
以保持TextFieldController
的状态