feat: autorefresh
Build Android APK (split per ABI) / build-apk (push) Waiting to run
Build & Deploy iOS to TestFlight / build-and-deploy (push) Waiting to run

This commit is contained in:
efrilm
2026-10-27 17:51:26 +07:00
parent e7c77051ab
commit a2f3af27b1
6 changed files with 102 additions and 11 deletions
+33 -1
View File
@@ -12,6 +12,7 @@ import '../../../common/theme/theme.dart';
import '../../../injection.dart';
import '../../components/button/button.dart';
import '../../components/spacer/spacer.dart';
import '../../router/app_router.gr.dart';
import 'widgets/feature.dart';
import 'widgets/header.dart';
import 'widgets/home_top_products.dart';
@@ -53,6 +54,9 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
late AnimationController _headerAnimationController;
late AnimationController _contentAnimationController;
TabsRouter? _tabsRouter;
bool _isActiveTab = true;
@override
void initState() {
super.initState();
@@ -77,8 +81,29 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
});
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
final tabsRouter = AutoTabsRouter.of(context);
if (_tabsRouter != tabsRouter) {
_tabsRouter?.removeListener(_onTabChanged);
_tabsRouter = tabsRouter..addListener(_onTabChanged);
}
}
// Refresh setiap kali tab Home dibuka lagi dari bottom nav
void _onTabChanged() {
final isActiveTab = _tabsRouter?.current.name == HomeRoute.name;
if (isActiveTab && !_isActiveTab) _refreshAll(context);
_isActiveTab = isActiveTab;
}
@override
void dispose() {
_tabsRouter?.removeListener(_onTabChanged);
_headerAnimationController.dispose();
_contentAnimationController.dispose();
super.dispose();
@@ -88,6 +113,13 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
context.read<HomeBloc>().add(HomeEvent.fetchedDashboard());
}
void _refreshAll(BuildContext context) {
_refetchDashboard(context);
context.read<ExclusiveSummaryLoaderBloc>().add(
const ExclusiveSummaryLoaderEvent.fetched(),
);
}
@override
Widget build(BuildContext context) {
return BlocListener<SelectedOutletBloc, SelectedOutletState>(
@@ -100,7 +132,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
backgroundColor: AppColor.white,
color: AppColor.primary,
onRefresh: () {
_refetchDashboard(context);
_refreshAll(context);
return Future.value();
},
child: BlocBuilder<HomeBloc, HomeState>(