Browse Source

no message

ios
Jolie 4 months ago
parent
commit
ecf8b32544
1 changed files with 11 additions and 44 deletions
  1. 55
      lib/pages/message/chat_page.dart

55
lib/pages/message/chat_page.dart

@ -25,8 +25,6 @@ class _ChatPageState extends State<ChatPage> {
final ScrollController _scrollController = ScrollController();
bool _isLoadingMore = false;
late ChatController _controller;
bool _isInitialLoad = true; //
int _previousMessageCount = 0; //
@override
void initState() {
@ -46,49 +44,18 @@ class _ChatPageState extends State<ChatPage> {
}
});
//
//
_controller.messages.listen((_) {
final currentCount = _controller.messages.length;
//
//
final shouldScroll = _isInitialLoad || (currentCount > _previousMessageCount && !_controller.messages.last.direction.isSend);
if (shouldScroll) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (_scrollController.hasClients && _controller.messages.isNotEmpty) {
//
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
duration: Duration(milliseconds: 300),
curve: Curves.easeOut,
);
}
//
if (_isInitialLoad) {
_isInitialLoad = false;
}
_previousMessageCount = currentCount;
});
} else {
_previousMessageCount = currentCount;
}
});
//
WidgetsBinding.instance.addPostFrameCallback((_) {
if (_controller.messages.isNotEmpty) {
Future.delayed(Duration(milliseconds: 100), () {
if (_scrollController.hasClients && mounted) {
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
duration: Duration(milliseconds: 300),
curve: Curves.easeOut,
);
_isInitialLoad = false;
_previousMessageCount = _controller.messages.length;
}
});
}
WidgetsBinding.instance.addPostFrameCallback((_) {
if (_scrollController.hasClients && _controller.messages.isNotEmpty) {
//
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
duration: Duration(milliseconds: 300),
curve: Curves.easeOut,
);
}
});
});
}

Loading…
Cancel
Save