import 'dart:io'; 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'; import '../resource/colors.gen.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 Container( width: 360.w, height: 400.w, decoration: BoxDecoration( image: DecorationImage( image: Assets.images.bgDialogAddFriend.provider(), fit: BoxFit.fill), ), child: Stack( children: [ buildFriendTitleView(), buildAddFriendBtnView(), ], ), ); } Widget buildFriendTitleView() { return Positioned( left: 45.w, top: 64.w, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(StringName.dialogAddFriendTitle, style: TextStyle(fontSize: 12.sp, color: '#7A6187'.color)), SizedBox(height: 4.w), Assets.images.imgDialogAddFriendTitle.image(width: 167.w) ], ), ); } Widget buildAddFriendBtnView() { return Positioned( left: 55.w, right: 55.w, bottom: 10.w, child: Column( children: [ GestureDetector( onTap: onAddFriendClick, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(100.w), gradient: LinearGradient(colors: [ '#7B7DFF'.color, '#6365FF'.color, ])), width: double.infinity, height: 44.w, child: Center( child: Text( Platform.isAndroid ? StringName.dialogAddFriendBtn : StringName.dialogAddFriendBtnIos, style: TextStyle(fontSize: 15.sp, color: Colors.white)), ), ), ), SizedBox(height: 3.w), GestureDetector( onTap: onNextTimeClick, child: Padding( padding: EdgeInsets.all(8.w), child: Text( StringName.dialogAddFriendNextTime, style: TextStyle(fontSize: 11.sp, color: ColorName.black40), ), ), ) ], ), ); } void onNextTimeClick() { onCloseClick?.call(); AddFriendDialog.dismiss(); } void onAddFriendClick() { onAddClick(); AddFriendDialog.dismiss(); } }