import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:tm_app/core/utils/size_config.dart'; import '../../core/constants/common_strings.dart'; import '../../core/constants/tender_submision_mode.dart'; import '../../core/theme/colors.dart'; class SelectSubmissionDialog extends StatefulWidget { const SelectSubmissionDialog({required this.onConfirm, super.key}); final ValueChanged onConfirm; @override State createState() => _SelectSubmissionDialogState(); } class _SelectSubmissionDialogState extends State { int selectedType = 0; String type = TenderSubmissionMode.selfApply.value; @override Widget build(BuildContext context) { return Dialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), side: BorderSide.none, ), child: Container( width: 560, height: 300, padding: EdgeInsets.symmetric(horizontal: 24.0.w(), vertical: 16.0.h()), decoration: BoxDecoration( color: AppColors.backgroundColor, borderRadius: BorderRadius.circular(16), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( CommonStrings.selectSubmission, style: TextStyle( fontSize: 20.0.sp(), fontWeight: FontWeight.w600, color: AppColors.grey70, ), ), InkWell( onTap: () { context.pop(); }, splashColor: Colors.transparent, child: Container( width: 24.0.w(), height: 24.0.w(), decoration: BoxDecoration( shape: BoxShape.circle, border: Border.all(color: AppColors.grey60, width: 2.0), ), alignment: Alignment.center, child: Icon( Icons.close, color: AppColors.grey60, size: 16.0, ), ), ), ], ), SizedBox(height: 16.0.h()), Divider(color: AppColors.grey20), SizedBox(height: 8.0.h()), _submissionType( title: CommonStrings.selfApply, isSelected: type == TenderSubmissionMode.selfApply.value, onTap: () { selectedType = 0; type = TenderSubmissionMode.selfApply.value; setState(() {}); }, ), SizedBox(height: 8.0.h()), _submissionType( title: CommonStrings.partnership, isSelected: type == TenderSubmissionMode.partnership.value, onTap: () { selectedType = 1; type = TenderSubmissionMode.partnership.value; setState(() {}); }, ), SizedBox(height: 8.0.h()), Align( alignment: Alignment.centerRight, child: Row( children: [ const Spacer(), InkWell( onTap: () { widget.onConfirm(type); context.pop(); }, child: Container( width: 150, height: 56.0, decoration: BoxDecoration( color: AppColors.primary20, borderRadius: BorderRadius.circular(100), ), alignment: Alignment.center, child: Text( CommonStrings.confirm, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, color: AppColors.mainBlue, ), ), ), ), ], ), ), ], ), ), ); } Widget _submissionType({ required VoidCallback onTap, required String title, required bool isSelected, }) { return InkWell( onTap: onTap, child: SizedBox( width: double.infinity, height: 56.0.h(), child: Row( children: [ Container( width: 20.0.w(), height: 20.0.w(), margin: EdgeInsets.symmetric( horizontal: 10.0.w(), vertical: 10.0.h(), ), padding: const EdgeInsets.all(3), decoration: BoxDecoration( shape: BoxShape.circle, border: Border.all( color: isSelected ? AppColors.mainBlue : AppColors.grey70, width: 2.0, ), ), alignment: Alignment.center, child: Container( decoration: BoxDecoration( shape: BoxShape.circle, color: isSelected ? AppColors.mainBlue : Colors.transparent, ), ), ), Text( title, style: TextStyle( fontSize: 16.0.sp(), fontWeight: FontWeight.w400, color: AppColors.grey80, ), ), ], ), ), ); } }