From 699c3dfaf7fc54a179ae18376fa95b0eeaae3dad Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 7 Oct 2024 13:03:35 +0300 Subject: [PATCH] feat(consultant): diplomas and certificates --- .../entities/diploma_entity.dart | 13 ++ .../certificates_and_diplomas_screen.dart | 135 ++++++++++++++---- 2 files changed, 119 insertions(+), 29 deletions(-) create mode 100644 lib/features/consultant/become_consultant/entities/diploma_entity.dart diff --git a/lib/features/consultant/become_consultant/entities/diploma_entity.dart b/lib/features/consultant/become_consultant/entities/diploma_entity.dart new file mode 100644 index 00000000..0194a811 --- /dev/null +++ b/lib/features/consultant/become_consultant/entities/diploma_entity.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; + +class DiplomaEntity { + TextEditingController textEditingController; + DateTime? date; + bool enableDeleteButton; + + DiplomaEntity({ + this.date, + required this.textEditingController, + required this.enableDeleteButton, + }); +} diff --git a/lib/features/consultant/become_consultant/presentation/pages/certificates_and_diplomas_screen.dart b/lib/features/consultant/become_consultant/presentation/pages/certificates_and_diplomas_screen.dart index 7baafdd4..06e8bc0b 100644 --- a/lib/features/consultant/become_consultant/presentation/pages/certificates_and_diplomas_screen.dart +++ b/lib/features/consultant/become_consultant/presentation/pages/certificates_and_diplomas_screen.dart @@ -1,7 +1,8 @@ -import 'package:eatvio_app/core/utils/date_time_utils.dart'; +import 'package:eatvio_app/features/consultant/become_consultant/entities/diploma_entity.dart'; import 'package:eatvio_app/widgets/custom_text_form_field.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:eatvio_app/core/utils/date_time_utils.dart'; class CertificatesAndDiplomasScreen extends StatefulWidget { const CertificatesAndDiplomasScreen({super.key}); @@ -11,7 +12,13 @@ class CertificatesAndDiplomasScreen extends StatefulWidget { } class _CertificatesAndDiplomasScreenState extends State { - late DateTime selectedDate = DateTime.now(); + List diplomasList = [ + DiplomaEntity( + textEditingController: TextEditingController(), + enableDeleteButton: false, + date: null, + ), + ]; @override Widget build(BuildContext context) { @@ -30,30 +37,77 @@ class _CertificatesAndDiplomasScreenState extends State _diplomaInfo(diploma: diplomasList[index]), + separatorBuilder: (context, index) => Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: _divider(context), + ), + itemCount: diplomasList.length, + ), + ], + ), + ); + } + + _divider(BuildContext context) { + return Container( + height: 0.4, + width: MediaQuery.of(context).size.width - 32, + decoration: BoxDecoration( + color: Colors.black26, + borderRadius: BorderRadius.circular(16), + ), + ); + } + + _diplomaInfo({ + required DiplomaEntity diploma, + }) { + return Column( + children: [ + CustomTextFormField( + controller: diploma.textEditingController, + onChanged: (value) { + checkLast(); + enableDeleteButton(diploma); + }, + hintText: 'Наименование', + ), + const SizedBox(height: 8), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + width: MediaQuery.of(context).size.width - (diploma.enableDeleteButton ? 92 : 32), + child: ListTile( + onTap: onTapCalendar(context, diploma), + trailing: Icon( + Icons.keyboard_arrow_down_rounded, + color: Colors.grey.shade700, + ), + contentPadding: EdgeInsets.symmetric(horizontal: 12), + title: Text( + diploma.date?.format('dd MMMM yyyy', 'ru') ?? 'Дата выдачи', + style: TextStyle( + color: diploma.date == null ? Colors.grey.shade400 : Colors.black, ), ), + tileColor: Color(0xFFF6F6F6), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), ), - const SizedBox(width: 8), + ), + if (diploma.enableDeleteButton) const SizedBox(width: 8), + if (diploma.enableDeleteButton) InkWell( - onTap: () {}, + onTap: () { + setState(() { + diplomasList.remove(diploma); + }); + }, borderRadius: BorderRadius.circular(20), child: Ink( height: 52, @@ -67,25 +121,26 @@ class _CertificatesAndDiplomasScreenState extends State