import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:proxibuy/core/config/app_colors.dart'; import 'package:proxibuy/core/gen/assets.gen.dart'; Future showNotificationPermissionDialog(BuildContext context) async { final status = await Permission.notification.status; if (status.isGranted) { return; } await showDialog( context: context, barrierDismissible: false, builder: (BuildContext dialogContext) { return Dialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)), elevation: 10, backgroundColor: Colors.white, child: Stack( clipBehavior: Clip.none, alignment: Alignment.topCenter, children: [ Padding( padding: const EdgeInsets.only( top: 50, left: 20, right: 20, bottom: 20, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ const Text( "دسترسی به اعلان‌ها", style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), ), const SizedBox(height: 15), const Text( "وقتی یه تخفیف جذاب از فروشگاه‌های مورد علاقه‌ات فعال بشه، با یه اعلان فورا خبرت می‌کنیم. فقط کافیه اجازه ارسال اعلان رو بدی.", style: TextStyle( color: AppColors.hint, fontSize: 16, height: 1.5, ), textAlign: TextAlign.start, ), const SizedBox(height: 20), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ GestureDetector( onTap: () => Navigator.of(dialogContext).pop(), child: Text( "الان نه", style: TextStyle( color: AppColors.primary, fontWeight: FontWeight.bold, ), ), ), ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: AppColors.primary, foregroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), side: const BorderSide(color: AppColors.border), ), padding: const EdgeInsets.symmetric( horizontal: 45, vertical: 7, ), ), onPressed: () async { final result = await Permission.notification.request(); if (result.isGranted) { Navigator.of(dialogContext).pop(); } else { openAppSettings(); } }, child: const Text( "فعالسازی", style: TextStyle(color: Colors.white), ), ), ], ), ], ), ), Positioned( top: -40, child: Container( decoration: BoxDecoration( shape: BoxShape.circle, boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.3), blurRadius: 8, offset: const Offset(0, 4), ), ], ), child: CircleAvatar( backgroundColor: Colors.white, radius: 40, child: Padding( padding: const EdgeInsets.all(12.0), child: SvgPicture.asset(Assets.icons.volumeHigh.path), ), ), ), ), ], ), ); }, ); }