TF-4425 Fix load more not triggered on iOS 18 when fast scrolling to bottom (#4428)

This commit is contained in:
Dat Vu
2026-04-08 10:06:49 +07:00
committed by GitHub
parent 2a3325ab7a
commit 20f59da386
3 changed files with 51 additions and 4 deletions
@@ -693,7 +693,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
onNotification: (ScrollNotification scrollInfo) {
if (scrollInfo is ScrollEndNotification
&& controller.searchMoreState != SearchMoreState.waiting
&& scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent
&& scrollInfo.metrics.pixels >= scrollInfo.metrics.maxScrollExtent
&& scrollInfo.metrics.axisDirection == AxisDirection.down) {
controller.searchMoreEmailsAction();
}
@@ -701,7 +701,9 @@ class SearchEmailView extends GetWidget<SearchEmailController>
},
child: ListView.separated(
controller: controller.resultSearchScrollController,
physics: const AlwaysScrollableScrollPhysics(),
physics: PlatformInfo.isIOS
? const ClampingScrollPhysics()
: const AlwaysScrollableScrollPhysics(),
key: const PageStorageKey('list_presentation_email_in_search_view'),
itemCount: listPresentationEmail.length,
itemBuilder: (context, index) => _buildEmailItem(
@@ -366,7 +366,9 @@ class ThreadView extends GetWidget<ThreadController>
Widget listView = ListView.separated(
key: const PageStorageKey('list_presentation_email_in_threads'),
controller: controller.listEmailController,
physics: const AlwaysScrollableScrollPhysics(),
physics: PlatformInfo.isIOS
? const ClampingScrollPhysics()
: const AlwaysScrollableScrollPhysics(),
itemCount: listPresentationEmail.length + 2,
itemBuilder: (context, index) => Obx(() {
if (index == listPresentationEmail.length) {
@@ -440,7 +442,7 @@ class ThreadView extends GetWidget<ThreadController>
bool _handleScrollNotificationListener(ScrollNotification scrollInfo) {
if (scrollInfo is ScrollEndNotification &&
scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent &&
scrollInfo.metrics.pixels >= scrollInfo.metrics.maxScrollExtent &&
!controller.loadingMoreStatus.value.isRunning &&
scrollInfo.metrics.axisDirection == AxisDirection.down
) {