import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:location/resource/assets.gen.dart'; import 'package:location/resource/string.gen.dart'; import 'package:location/utils/common_expand.dart'; import 'package:location/utils/common_style.dart'; class AddFriendDialog { static final String _tag = 'AddFriendDialog'; static void show( {required VoidCallback onAddClick, VoidCallback? onCloseClick, VoidCallback? onNotAddDismiss}) { bool isClickAdd = false; SmartDialog.show( tag: _tag, onDismiss: () { if (!isClickAdd) { onNotAddDismiss?.call(); } }, builder: (_) { return AddFriendDialogView( onAddClick: () { isClickAdd = true; onAddClick(); }, onCloseClick: onCloseClick); }); } static void dismiss() { SmartDialog.dismiss(tag: _tag); } } class AddFriendDialogView extends Dialog { final VoidCallback onAddClick; final VoidCallback? onCloseClick; const AddFriendDialogView({ super.key, required this.onAddClick, this.onCloseClick, }); @override Widget build(BuildContext context) { return IntrinsicHeight( child: Stack( children: [ Center( child: Container( width: 289.w, margin: EdgeInsets.only(top: 34.w), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(20.w), ), child: IntrinsicHeight( child: Align( alignment: Alignment.topCenter, child: Stack( children: [ SizedBox( width: double.infinity, child: Column(children: [ SizedBox(height: 89.w), Text(StringName.dialogAddFriendTitle, style: TextStyle( fontSize: 18.sp, color: '#333333'.color, fontWeight: FontWeight.bold)), SizedBox(height: 8.w), Text(StringName.dialogAddFriendDesc, style: TextStyle( fontSize: 15.sp, color: '#404040'.color)), SizedBox(height: 23.w), GestureDetector( onTap: () { onAddClick(); AddFriendDialog.dismiss(); }, child: Container( width: 229.w, height: 40.w, decoration: getPrimaryBtnDecoration(32.w), child: Center( child: Text(StringName.dialogAddFriendBtn, style: TextStyle( fontSize: 14.sp, color: Colors.white)), ), ), ), SizedBox(height: 22.w), ]), ), Align( alignment: Alignment.topRight, child: Container( margin: EdgeInsets.only(top: 12.w, right: 12.w), child: GestureDetector( onTap: () { onCloseClick?.call(); AddFriendDialog.dismiss(); }, child: Assets.images.iconDialogClose .image(width: 20.w, height: 20.w), ), )) ], ), ), ), ), ), Align( alignment: Alignment.topCenter, child: Assets.images.iconDialogAddFriend.image(width: 124.w)), ], ), ); } }