Files
enaklo-flutter/lib/presentation/pages/main/main_page.dart
T
efrilmandClaude Opus 5.5 bc751246d8 Tab Community, tombol Bayar di navbar, logo placeholder, fix crash PIN
- Bottom navbar: Home, Pesanan, Bayar (tombol tengah ke kode bayar),
  Community, Profil; menu EnakCommunity di beranda pindah ke tab
- Image placeholder: logo Enaklo diperbesar, ilustrasi gelas dihapus
- Fix assertion Navigator saat PIN gagal karena error non-PIN: flushbar
  kini tampil lewat onFailure setelah sheet PIN tertutup (bayar, tukar,
  transfer)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 02:05:49 +07:00

62 lines
1.7 KiB
Dart

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<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(),
);
}
@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,
),
);
},
);
}
}