Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何更新日期时间?_Flutter_Dart - Fatal编程技术网

Flutter 如何更新日期时间?

Flutter 如何更新日期时间?,flutter,dart,Flutter,Dart,我正在用fisebase开发一个实时聊天应用程序。问题是发送消息的时间不更新,我不知道还能做什么 以下是我的部分代码: 导入“包装:颤振/材料.省道”; 导入“package:heyou/helper/constants.dart”; 导入“package:heyou/screens/conversation_screen/send_menu_items.dart”; 导入“package:heyou/services/database.dart”; 导入“包:intl/intl.dart”;

我正在用fisebase开发一个实时聊天应用程序。问题是发送消息的时间不更新,我不知道还能做什么

以下是我的部分代码:

导入“包装:颤振/材料.省道”;
导入“package:heyou/helper/constants.dart”;
导入“package:heyou/screens/conversation_screen/send_menu_items.dart”;
导入“package:heyou/services/database.dart”;
导入“包:intl/intl.dart”;
类ConversationScreen扩展StatefulWidget{
最终字符串ID;
对话屏幕(this.chatScreenId);
@凌驾
_ConversationScreenState createState()=>_ConversationScreenState();
}
类_ConversationScreenState扩展状态{
DateTime _currentDate=新的DateTime.now();
DatabaseMethods DatabaseMethods=新的DatabaseMethods();
TextEditingController messageController=新的TextEditingController();
流聊天信息流;
Widget chatMessageList(){
返回流生成器(
stream:chatMessageStream,
生成器:(上下文,快照){
返回snapshot.hasData?ListView.builder(
填充:仅限边缘设置(底部:70.0),
itemCount:snapshot.data.documents.length,
相反:是的,
itemBuilder:(上下文,索引){
返回消息平铺(
snapshot.data.documents[index].data['message'],
snapshot.data.documents[index].data['sendBy']==Constants.myName,
snapshot.data.documents[index].data['time'],
snapshot.data.documents[index].data['messageTimeTile'],
);
}
):容器();
},
);
}
sendMessage(){
if(messageController.text.isNotEmpty){
映射消息映射={
“消息”:messageController.text,
“sendBy”:Constants.myName,
“时间”:DateTime.now().toString(),
'messageTimeTile':新的DateFormat.Hms().format(_currentDate).toString(),
};
databaseMethods.addConversationMessages(widget.chatScreenId,messageMap);
messageController.text='';
}
}
@凌驾
void initState(){
databaseMethods.getConversationMessages(widget.chatScreenId).then((值){
设置状态(){
chatMessageStream=值;
});
});
super.initState();
} 
} 
这是我的数据库代码:

import'包:cloud_firestore/cloud_firestore.dart';
类数据库方法{
getUserByUsername(字符串用户名)异步{
return wait Firestore.instance.collection('users')。其中('name',isEqualTo:username)。getDocuments();
}
getUserByUserEmail(字符串userEmail)异步{
return wait-Firestore.instance.collection('users')。where('email',isEqualTo:userEmail.getDocuments();
}
上传用户信息(用户地图){
Firestore.instance.collection('users').add(userMap);
}
createChatScreen(字符串chatScreenId,chatScreenMap){
Firestore.instance.collection('ChatScreen')。document(chatScreenId)。setData(chatScreenMap)。catchError((e){
打印(如toString());
});
}
addConversationMessages(字符串chatScreenId,messageMap){
Firestore.instance.collection('ChatScreen')。document(chatScreenId)。collection('chats')。add(messageMap)
.catchError((e){
打印(如toString());
});
}
getConversationMessages(字符串chatScreenId)异步{
返回Firestore.instance.collection('ChatScreen').document(chatScreenId)。collection('chats'))
.orderBy('time',降序:true).snapshots();
}
getHomeScreen(字符串用户名)异步{
返回Firestore.instance.collection('ChatScreen')。其中('users',arrayContains:userName)。snapshots();
}
}

我正试图自己修复它,但我不能,这就是我在这里的原因。

当您创建
\u currentDate
时,它永远不会更新。因此,始终是创建
状态
对象的时间。您可以在评论中使用Midhun MP的建议,或者替换
DateTime\u currentDate=new DateTime.now()DateTime get\u currentDate=>DateTime.now()进行编码>
始终获取当前日期的副本,以防在多个位置使用它。

而不是
DateFormat.Hms().format(_currentDate).toString()
您可能需要编写
DateFormat.Hms().format(DateTime.now()).toString()
DateTime\u currentDate=new DateTime.now()
您只初始化了一次
\u currentDate
,因此该值在此之后不会更改。要么你每次都要在sendMessage中重新分配变量,要么像我之前的评论那样执行。谢谢,它成功了!