From 0ead4556b9f0c6947812bd9ad7ca98e78b0712d6 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 21 Apr 2025 13:00:23 +0300 Subject: [PATCH] feat(archiveOfConsultations): #331 --- .../entities/consultations_entity.dart | 2 +- .../pages/consultations_screen.dart | 52 ++++++++++++++++--- .../pages/consultant_finance_screen.dart | 46 ++++++++++++++-- 3 files changed, 88 insertions(+), 12 deletions(-) diff --git a/lib/features/consultations/entities/consultations_entity.dart b/lib/features/consultations/entities/consultations_entity.dart index 8b7ed8dd..d3cbbae5 100644 --- a/lib/features/consultations/entities/consultations_entity.dart +++ b/lib/features/consultations/entities/consultations_entity.dart @@ -51,7 +51,7 @@ List generateTestData() { final List names = ["Иван Петров", "Анна Смирнова", "Дмитрий Соколов", "Елена Козлова", "Алексей Иванов"]; final List plans = ["Похудение", "Набор массы", "Детокс", "Здоровое питание", "Вегетарианство"]; - List testConsultations = List.generate(20, (index) { + List testConsultations = List.generate(6, (index) { DateTime startDate = DateTime.now().subtract(Duration(days: random.nextInt(30))); DateTime endDate = startDate.add(const Duration(days: 30)); diff --git a/lib/features/consultations/presentation/pages/consultations_screen.dart b/lib/features/consultations/presentation/pages/consultations_screen.dart index d5b7bc18..7fd9c773 100644 --- a/lib/features/consultations/presentation/pages/consultations_screen.dart +++ b/lib/features/consultations/presentation/pages/consultations_screen.dart @@ -1,6 +1,8 @@ +import 'package:eatvio_app/core/theme/theme_helper.dart'; import 'package:eatvio_app/features/consultations/entities/consultations_entity.dart'; import 'package:eatvio_app/features/consultations/presentation/widgets/consultation_card_widget.dart'; import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; class ConsultationsScreen extends StatelessWidget { const ConsultationsScreen({super.key}); @@ -18,15 +20,49 @@ class ConsultationsScreen extends StatelessWidget { ), ), ), - body: ListView.separated( - padding: const EdgeInsets.symmetric(vertical: 12), - itemBuilder: (context, index) => ConsultationCardWidget( - consultationsEntity: testData[index], + body: SingleChildScrollView( + child: Column( + children: [ + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: const EdgeInsets.symmetric(vertical: 12), + itemBuilder: (context, index) => ConsultationCardWidget( + consultationsEntity: testData[index], + ), + separatorBuilder: (context, index) => const SizedBox( + height: 12, + ), + itemCount: testData.length, + ), + const SizedBox(height: 20), + InkWell( + borderRadius: BorderRadius.circular(20), + onTap: () { + GoRouter.of(context).pushNamed('consultantFinanceScreen'); + }, + child: Ink( + width: MediaQuery.of(context).size.width - 32, + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + color: appTheme.blueA400, + ), + child: const Center( + child: Text( + 'Архив консультаций', + style: TextStyle( + color: Colors.white, + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + ), + ), + ), + const SizedBox(height: 20), + ], ), - separatorBuilder: (context, index) => const SizedBox( - height: 12, - ), - itemCount: testData.length, ), ); } diff --git a/lib/features/my_finance/presentation/pages/consultant_finance_screen.dart b/lib/features/my_finance/presentation/pages/consultant_finance_screen.dart index 39a7cbd7..c079e0a3 100644 --- a/lib/features/my_finance/presentation/pages/consultant_finance_screen.dart +++ b/lib/features/my_finance/presentation/pages/consultant_finance_screen.dart @@ -1,12 +1,22 @@ +import 'package:collection/collection.dart'; +import 'package:eatvio_app/core/theme/custom_text_style.dart'; import 'package:eatvio_app/core/theme/theme_helper.dart'; import 'package:eatvio_app/core/utils/date_time_utils.dart'; import 'package:eatvio_app/core/widgets/custom_drop_down_button.dart'; import 'package:eatvio_app/features/my_finance/entities/consultant_finance_entity.dart'; import 'package:flutter/material.dart'; -class ConsultantFinanceScreen extends StatelessWidget { +class ConsultantFinanceScreen extends StatefulWidget { const ConsultantFinanceScreen({super.key}); + @override + State createState() => _ConsultantFinanceScreenState(); +} + +class _ConsultantFinanceScreenState extends State { + final List periods = ['За всё время', 'За месяц', 'За неделю']; + final List statuses = ['Все консультации', 'Отменён', 'Завершён', 'В процессе']; + @override Widget build(BuildContext context) { return Scaffold( @@ -117,13 +127,35 @@ class ConsultantFinanceScreen extends StatelessWidget { child: Column( children: [ CustomDropDownButton( - items: const [], + items: periods + .mapIndexed( + (index, value) => DropdownMenuItem( + value: periods[index], + child: Text( + periods[index], + style: TextStyles.textMMedium.copyWith(color: appTheme.black), + ), + ), + ) + .toList(), onChanged: (value) {}, + value: periods.first, ), const SizedBox(height: 12), CustomDropDownButton( - items: const [], + items: statuses + .mapIndexed( + (index, value) => DropdownMenuItem( + value: statuses[index], + child: Text( + statuses[index], + style: TextStyles.textMMedium.copyWith(color: appTheme.black), + ), + ), + ) + .toList(), onChanged: (value) {}, + value: statuses.first, ), const SizedBox(height: 12), ListView.separated( @@ -189,6 +221,14 @@ class ConsultantFinanceScreen extends StatelessWidget { ), ), const SizedBox(height: 8), + Container( + height: 1, + width: double.infinity, + decoration: const BoxDecoration( + color: Color(0xFFDEDEDF), + ), + ), + const SizedBox(height: 8), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [