import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import '../main.dart'; import '../mih_objects/arguments.dart'; class MIHNotificationMessage extends StatefulWidget { final NotificationArguments arguments; const MIHNotificationMessage({ super.key, required this.arguments, }); @override State createState() => _MIHNotificationMessageState(); } class _MIHNotificationMessageState extends State with SingleTickerProviderStateMixin { //var messageTypes = {}; late AnimationController _animationController; late Animation _scaleAnimation; late double popUpWidth; late double? popUpheight; late double popUpTitleSize; late double popUpSubtitleSize; late double popUpBodySize; late double popUpIconSize; late double popUpPaddingSize; late Color primary; late Color secondary; Size? size; void checkScreenSize() { if (MzansiInnovationHub.of(context)!.theme.screenType == "desktop") { setState(() { popUpWidth = (size!.width / 4) * 2; popUpheight = 90; popUpTitleSize = 20.0; popUpSubtitleSize = 20.0; popUpBodySize = 15; popUpPaddingSize = 25.0; popUpIconSize = 100; }); } else { setState(() { popUpWidth = size!.width; popUpheight = 90; popUpTitleSize = 20.0; popUpSubtitleSize = 18.0; popUpBodySize = 15; popUpPaddingSize = 5.0; popUpIconSize = 100; }); } } Widget notifyPopUp() { return GestureDetector( onTap: widget.arguments.onTap, child: Container( padding: EdgeInsets.symmetric(vertical: 5, horizontal: popUpPaddingSize), alignment: Alignment.topLeft, width: popUpWidth, height: popUpheight, decoration: BoxDecoration( color: primary, borderRadius: BorderRadius.circular(25.0), border: Border.all(color: secondary, width: 5.0), ), child: Column( // crossAxisAlignment: CrossAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: [ //const SizedBox(height: 5), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.notifications, color: secondary, ), const SizedBox(width: 10), Flexible( child: Text( widget.arguments.title, textAlign: TextAlign.center, overflow: TextOverflow.ellipsis, style: TextStyle( color: secondary, fontSize: popUpTitleSize, fontWeight: FontWeight.bold, ), ), ), ], ), const SizedBox(height: 5), Wrap( alignment: WrapAlignment.start, children: [ SizedBox( width: popUpWidth, child: Text( widget.arguments.body, textAlign: TextAlign.left, overflow: TextOverflow.ellipsis, style: TextStyle( color: secondary, fontSize: popUpBodySize, fontWeight: FontWeight.bold, ), ), ), ], ), ], ), ), ); } @override void dispose() { _animationController.dispose(); super.dispose(); } @override void initState() { super.initState(); setState(() { primary = MihColors.getPrimaryColor( MzansiInnovationHub.of(context)!.theme.mode == "Dark"); secondary = MihColors.getRedColor( MzansiInnovationHub.of(context)!.theme.mode == "Dark"); }); _animationController = AnimationController( vsync: this, duration: const Duration(milliseconds: 300), // Adjust the duration as needed ); _scaleAnimation = Tween( begin: const Offset(0, -1), end: Offset.zero, ).animate(_animationController); // Start the animation when // the dialog is displayed _animationController.forward(); } @override Widget build(BuildContext context) { size = MediaQuery.of(context).size; checkScreenSize(); //setInputError(); //print(size); // setState(() { // width = size.width; // height = size.height; // }); return SlideTransition( position: _scaleAnimation, child: Dialog( insetPadding: const EdgeInsets.only( top: 45, left: 5, right: 5, ), shadowColor: secondary, alignment: Alignment.topCenter, child: notifyPopUp(), ), ); // return SlideTransition( // position: Tween( // begin: const Offset(0, -1), // end: Offset.zero, // ).animate(widget.animationController), // child: Dialog( // alignment: Alignment.topCenter, // child: NotifyPopUp(), // ), // ); } }