import 'package:wanisdriver/widgets/custom_button.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../Provider/language_provider.dart'; import 'custom_text.dart'; class SimpleDynamicIslandDialog extends StatefulWidget { final String title; final String content; final String actionText; final VoidCallback? onAction; final bool barrierDismissible; const SimpleDynamicIslandDialog({ required this.title, required this.content, this.actionText = 'Open Settings', this.onAction, this.barrierDismissible = false, super.key, }); @override State createState() => _SimpleDynamicIslandDialogState(); } class _SimpleDynamicIslandDialogState extends State with SingleTickerProviderStateMixin { late AnimationController _controller; late Animation _slideAnimation; late Animation _scaleAnimation; @override void initState() { super.initState(); _controller = AnimationController( duration: const Duration(milliseconds: 400), vsync: this, ); _slideAnimation = Tween( begin: const Offset(0, -1), end: Offset.zero, ).animate(CurvedAnimation( parent: _controller, curve: Curves.elasticOut, )); _scaleAnimation = Tween( begin: 0.8, end: 1.0, ).animate(CurvedAnimation( parent: _controller, curve: Curves.easeOutBack, )); _controller.forward(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Material( color: Colors.transparent, child: WillPopScope( onWillPop: () async => widget.barrierDismissible, child: Padding( padding: const EdgeInsets.all(16), child: Align( alignment: Alignment.topCenter, child: SlideTransition( position: _slideAnimation, child: ScaleTransition( scale: _scaleAnimation, child: Container( constraints: const BoxConstraints(maxWidth: 320), decoration: BoxDecoration( color: const Color(0xFF1C1C1E), borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.3), blurRadius: 20, offset: const Offset(0, 8), ), ], ), padding: const EdgeInsets.all(20), child: Column( mainAxisSize: MainAxisSize.min, children: [ Row( children: [ Icon( Icons.location_disabled_rounded, color: Colors.red.shade400, size: 24, ), const SizedBox(width: 12), Expanded( child: Txt( text: widget.title, overflow: TextOverflow.ellipsis, style: const TextStyle( color: Colors.white, fontSize: 16, fontWeight: FontWeight.w600, ), ), ), if (!widget.barrierDismissible) Icon( Icons.priority_high, color: Colors.orange.shade400, size: 20, ), ], ), const SizedBox(height: 12), Text( widget.content, //textAlign: TextAlign.center, style: TextStyle( color: Colors.white.withOpacity(0.8), fontSize: 14, height: 1.4, ), ), const SizedBox(height: 16), SizedBox( width: double.infinity, child: CustomButton( backgroundColor: Colors.blueAccent, borderColor: Colors.blueAccent, onClick: widget.onAction, title: widget.actionText, // TODO: Use translation system for actionText if not already translated ), ), ], ), ), ), ), ), ), ), ); } }