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
的状态