import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../../core/pairing/pairing_notifier.dart'; /// Terminal failed-pairing screen. /// /// Reached when the pairing notifier transitions to [PairingFailedData] /// (terminal — payment session is `failed_pairing` server-side, audit row /// recorded). Copy is intentionally identical regardless of `cause_tag` for /// now (the design pass will revise this later). /// /// Single CTA "Kembali ke beranda" resets the pairing notifier and routes /// home. PopScope falls back to home for deep-link entry per project memory /// rule "Deep-link pop fallback". class NoBestieScreen extends ConsumerWidget { const NoBestieScreen({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { return PopScope( canPop: true, onPopInvokedWithResult: (didPop, _) { if (!didPop) return; ref.read(pairingProvider.notifier).reset(); }, child: Scaffold( body: SafeArea( child: Center( child: Padding( padding: const EdgeInsets.all(32), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon(Icons.sentiment_dissatisfied, size: 80, color: Colors.orange), const SizedBox(height: 24), const Text( 'Belum berhasil terhubung', style: TextStyle(fontSize: 22, fontWeight: FontWeight.bold), ), const SizedBox(height: 12), const Text( 'Maaf, kami tidak bisa menemukan bestie untuk sesimu. ' 'Tim kami akan menghubungimu segera.', textAlign: TextAlign.center, style: TextStyle(fontSize: 16, color: Colors.grey), ), const SizedBox(height: 48), ElevatedButton( style: ElevatedButton.styleFrom( padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 14), ), onPressed: () { ref.read(pairingProvider.notifier).reset(); context.go('/home'); }, child: const Text('Kembali ke beranda'), ), ], ), ), ), ), ), ); } }