- 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>
62 lines
1.7 KiB
Dart
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,
|
|
),
|
|
);
|
|
},
|
|
);
|
|
}
|
|
}
|