import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/design/tokens.dart'; import '../../../core/l10n/l10n.dart'; import '../../../core/ui/status_banner.dart'; import '../../../core/ui/tripz_button.dart'; import '../../../core/ui/tripz_scaffold.dart'; import '../cubit/login_cubit.dart'; import '../cubit/login_state.dart'; import '../../../core/ui/form_header.dart'; /// البوابة الثانية: إذن الموقع. عند الرفض النهائي لا يبقى إلا فتح إعدادات /// النظام — والعودة منها يلتقطها `LoginPage` بمراقبة دورة الحياة. class PermissionView extends StatelessWidget { const PermissionView({super.key}); @override Widget build(BuildContext context) { final l10n = context.l10n; return BlocBuilder( buildWhen: (p, n) => p.permissionPermanentlyDenied != n.permissionPermanentlyDenied, builder: (context, state) { final cubit = context.read(); final denied = state.permissionPermanentlyDenied; return TripzScaffold( showAppBar: false, bottomAction: TripzButton.primary( label: denied ? l10n.actionOpenSettings : l10n.permissionAllow, onPressed: denied ? cubit.openSystemSettings : cubit.requestLocationPermission, ), child: ListView( children: [ const SizedBox(height: Space.xl), FormHeader( icon: Icons.my_location_rounded, title: l10n.permissionTitle, lead: l10n.permissionLead, ), if (denied) ...[ const SizedBox(height: Space.lg), StatusBanner( message: l10n.permissionDeniedForever, tone: BannerTone.warning, ), ], ], ), ); }, ); } }