TF-4002 Fix scroll have sharp jitter at the end of mailbox list
This commit is contained in:
@@ -1,6 +1,12 @@
|
|||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:model/mailbox/expand_mode.dart';
|
import 'package:model/mailbox/expand_mode.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_paywall_extension.dart';
|
||||||
|
import 'package:tmail_ui_user/features/quotas/domain/extensions/quota_extensions.dart';
|
||||||
|
import 'package:tmail_ui_user/features/quotas/presentation/quotas_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
mixin ExpandFolderTriggerScrollableMixin {
|
mixin ExpandFolderTriggerScrollableMixin {
|
||||||
void triggerScrollWhenExpandFolder(
|
void triggerScrollWhenExpandFolder(
|
||||||
@@ -27,9 +33,9 @@ mixin ExpandFolderTriggerScrollableMixin {
|
|||||||
|
|
||||||
final position = renderBox.localToGlobal(Offset.zero);
|
final position = renderBox.localToGlobal(Offset.zero);
|
||||||
final screenHeight = MediaQuery.of(context).size.height;
|
final screenHeight = MediaQuery.of(context).size.height;
|
||||||
const offsetY = 200;
|
final offsetY = _getOffsetY();
|
||||||
final bottomY = position.dy + renderBox.size.height + offsetY;
|
final bottomY = position.dy + renderBox.size.height + offsetY;
|
||||||
log('$runtimeType::_scrollToSelfIfNeeded:position = $position |screenHeight = $screenHeight | bottomY = $bottomY');
|
log('$runtimeType::_scrollToSelfIfNeeded:position = $position |screenHeight = $screenHeight | bottomY = $bottomY | offsetY = $offsetY');
|
||||||
if (bottomY > screenHeight) {
|
if (bottomY > screenHeight) {
|
||||||
final scrollOffset =
|
final scrollOffset =
|
||||||
scrollController.offset + bottomY - screenHeight + 40;
|
scrollController.offset + bottomY - screenHeight + 40;
|
||||||
@@ -41,4 +47,23 @@ mixin ExpandFolderTriggerScrollableMixin {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double _getOffsetY() {
|
||||||
|
try {
|
||||||
|
final quota = getBinding<QuotasController>()?.octetsQuota.value;
|
||||||
|
final isQuotaViewDisplayed = quota?.storageAvailable ?? false;
|
||||||
|
|
||||||
|
final isPremiumAvailable = getBinding<MailboxDashBoardController>()
|
||||||
|
?.validatePremiumIsAvailable() ?? false;
|
||||||
|
final isIncreaseSpaceButtonDisplayed =
|
||||||
|
isPremiumAvailable && PlatformInfo.isWeb;
|
||||||
|
|
||||||
|
if (isQuotaViewDisplayed && isIncreaseSpaceButtonDisplayed) return 260;
|
||||||
|
if (isQuotaViewDisplayed) return 200;
|
||||||
|
if (isIncreaseSpaceButtonDisplayed) return 150;
|
||||||
|
return 70;
|
||||||
|
} catch (_) {
|
||||||
|
return 70;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user