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>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
f5e3075205
commit
bc751246d8
@@ -14,14 +14,21 @@ typedef PinSubmitCallback = Future<WalletFailure?> Function(String pin);
|
||||
enum _PinSheetResult { success, failed, forgotPin, pinNotSet }
|
||||
|
||||
/// Meminta PIN lalu menjalankan [onSubmit]. Error PIN (§6.5) ditangani di dalam
|
||||
/// sheet; failure lain menutup sheet dan ditampilkan oleh halaman pemanggil.
|
||||
/// sheet; failure lain menutup sheet lalu diteruskan ke [onFailure].
|
||||
/// Mengembalikan `true` bila [onSubmit] sukses.
|
||||
///
|
||||
/// Tampilkan failure lewat [onFailure], jangan dari listener bloc: flushbar juga
|
||||
/// berupa route, jadi bila muncul selagi sheet masih terbuka, pop milik sheet
|
||||
/// justru menutup flushbar dan Navigator gagal assertion.
|
||||
Future<bool> showPinSheet(
|
||||
BuildContext context, {
|
||||
required String title,
|
||||
String? subtitle,
|
||||
required PinSubmitCallback onSubmit,
|
||||
ValueChanged<WalletFailure>? onFailure,
|
||||
}) async {
|
||||
WalletFailure? lastFailure;
|
||||
|
||||
final result = await showModalBottomSheet<_PinSheetResult>(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
@@ -30,8 +37,11 @@ Future<bool> showPinSheet(
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
|
||||
),
|
||||
builder: (_) =>
|
||||
_PinSheet(title: title, subtitle: subtitle, onSubmit: onSubmit),
|
||||
builder: (_) => _PinSheet(
|
||||
title: title,
|
||||
subtitle: subtitle,
|
||||
onSubmit: (pin) async => lastFailure = await onSubmit(pin),
|
||||
),
|
||||
);
|
||||
|
||||
if (!context.mounted) return false;
|
||||
@@ -46,6 +56,8 @@ Future<bool> showPinSheet(
|
||||
context.router.push(PinSetupRoute(purpose: PinOtpPurpose.setup));
|
||||
return false;
|
||||
case _PinSheetResult.failed:
|
||||
if (lastFailure != null) onFailure?.call(lastFailure!);
|
||||
return false;
|
||||
case null:
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user