Files
enaklo-flutter/lib/presentation/pages/main/main_page.dart
T

62 lines
1.7 KiB
Dart
Raw Normal View History

2025-08-27 18:51:14 +07:00
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
2025-09-18 12:25:48 +07:00
import 'package:flutter_bloc/flutter_bloc.dart';
2025-08-27 18:51:14 +07:00
2025-09-18 12:25:48 +07:00
import '../../../application/auth/auth_bloc.dart';
2025-08-27 18:51:14 +07:00
import '../../router/app_router.gr.dart';
import 'widgets/bottom_navbar.dart';
@RoutePage()
2025-09-18 12:25:48 +07:00
class MainPage extends StatefulWidget {
2025-08-27 18:51:14 +07:00
const MainPage({super.key});
2025-09-18 12:25:48 +07:00
@override
State<MainPage> createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
@override
initState() {
super.initState();
context.read<AuthBloc>().add(const AuthEvent.fetchCurrentUser());
}
/// Kode bayar di kasir; PIN diminta di halamannya sendiri.
void _openPay() {
final isAuthenticated = context.read<AuthBloc>().state.isAuthenticated;
context.router.push(
isAuthenticated ? const PaymentCodeRoute() : const OnboardingRoute(),
);
}
2025-08-27 18:51:14 +07:00
@override
Widget build(BuildContext context) {
return AutoTabsRouter.pageView(
2026-01-16 12:26:06 +07:00
routes: [
HomeRoute(),
// VoucherRoute(),
OrderRoute(),
CommunityRoute(),
2026-01-16 12:26:06 +07:00
ProfileRoute(),
],
2025-08-27 18:51:14 +07:00
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,
),
);
},
2025-08-27 18:51:14 +07:00
);
}
}