feat: autorefresh
This commit is contained in:
@@ -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>(
|
||||
|
||||
@@ -50,6 +50,9 @@ class _OrderPageState extends State<OrderPage> with TickerProviderStateMixin {
|
||||
late Animation<Offset> _slideAnimation;
|
||||
final ScrollController _scrollController = ScrollController();
|
||||
|
||||
TabsRouter? _tabsRouter;
|
||||
bool _isActiveTab = true;
|
||||
|
||||
// Filter state
|
||||
final List<String> filterOptions = ['All', 'Pending', 'Completed'];
|
||||
|
||||
@@ -80,8 +83,33 @@ class _OrderPageState extends State<OrderPage> with TickerProviderStateMixin {
|
||||
_slideController.forward();
|
||||
}
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
super.didChangeDependencies();
|
||||
|
||||
final tabsRouter = AutoTabsRouter.of(context);
|
||||
if (_tabsRouter != tabsRouter) {
|
||||
_tabsRouter?.removeListener(_onTabChanged);
|
||||
_tabsRouter = tabsRouter..addListener(_onTabChanged);
|
||||
}
|
||||
}
|
||||
|
||||
// Refresh setiap kali tab Order dibuka lagi dari bottom nav
|
||||
void _onTabChanged() {
|
||||
final isActiveTab = _tabsRouter?.current.name == OrderRoute.name;
|
||||
|
||||
if (isActiveTab && !_isActiveTab) {
|
||||
context.read<OrderLoaderBloc>()
|
||||
..add(OrderLoaderEvent.fetched(isRefresh: true))
|
||||
..add(const OrderLoaderEvent.summaryFetched());
|
||||
}
|
||||
|
||||
_isActiveTab = isActiveTab;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_tabsRouter?.removeListener(_onTabChanged);
|
||||
_fadeController.dispose();
|
||||
_slideController.dispose();
|
||||
super.dispose();
|
||||
|
||||
Reference in New Issue
Block a user