import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../application/auth/auth_bloc.dart'; import '../../router/app_router.gr.dart'; import 'widgets/bottom_navbar.dart'; @RoutePage() class MainPage extends StatefulWidget { const MainPage({super.key}); @override State createState() => _MainPageState(); } class _MainPageState extends State { @override initState() { super.initState(); context.read().add(const AuthEvent.fetchCurrentUser()); } /// Kode bayar di kasir; PIN diminta di halamannya sendiri. void _openPay() { final isAuthenticated = context.read().state.isAuthenticated; context.router.push( isAuthenticated ? const PaymentCodeRoute() : const OnboardingRoute(), ); } @override Widget build(BuildContext context) { return AutoTabsRouter.pageView( routes: [ HomeRoute(), // VoucherRoute(), OrderRoute(), CommunityRoute(), ProfileRoute(), ], physics: const NeverScrollableScrollPhysics(), builder: (context, child, pageController) { // Docked FAB ikut naik ke atas keyboard; sembunyikan saat mengetik. final isKeyboardOpen = MediaQuery.viewInsetsOf(context).bottom > 0; return Scaffold( body: child, floatingActionButton: isKeyboardOpen ? null : MainPayButton(onPressed: _openPay), floatingActionButtonLocation: const MainPayButtonLocation(), bottomNavigationBar: MainBottomNavbar( tabsRouter: AutoTabsRouter.of(context), onPayTap: _openPay, ), ); }, ); } }