diff --git a/assets/images/ic_russia.svg b/assets/images/ic_russia.svg new file mode 100644 index 0000000..943d57f --- /dev/null +++ b/assets/images/ic_russia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/core/resources/assets/vector_assets.dart b/lib/core/resources/assets/vector_assets.dart index 994bd2d..82f6363 100644 --- a/lib/core/resources/assets/vector_assets.dart +++ b/lib/core/resources/assets/vector_assets.dart @@ -7,12 +7,12 @@ class VectorAssets { //BottomNavBar static const String icHomeDeactive = 'assets/images/ic_home_deactive.svg'; - static const String icHistoryDeactive = 'assets/images/ic_history_deactive.svg'; - static const String icNoteBookDeactive = 'assets/images/ic_notebook_deactive.svg'; - static const String icProfileDeactive = 'assets/images/ic_profile_deactive.svg'; - - - + static const String icHistoryDeactive = + 'assets/images/ic_history_deactive.svg'; + static const String icNoteBookDeactive = + 'assets/images/ic_notebook_deactive.svg'; + static const String icProfileDeactive = + 'assets/images/ic_profile_deactive.svg'; // static const String icHomeActive = 'assets/images/ic_home_active.svg'; @@ -24,10 +24,9 @@ class VectorAssets { static const String icBell = 'assets/images/ic_bell.svg'; static const String icDoOrder = 'assets/images/ic_do_order.svg'; static const String icLogout = 'assets/images/ic_logout.svg'; + static const String icRussia = 'assets/images/ic_russia.svg'; static const String icBook = 'assets/images/ic_book.svg'; static const String icPlansh = 'assets/images/ic_plansh.svg'; static const String icHistory = 'assets/images/ic_history.svg'; - - } diff --git a/lib/core/widgets/my_data_textfield.dart b/lib/core/widgets/my_data_textfield.dart new file mode 100644 index 0000000..fee4997 --- /dev/null +++ b/lib/core/widgets/my_data_textfield.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:vas_app/core/resources/assets/resources.dart'; +import 'package:vas_app/core/theme/app_colors.dart'; +import 'package:vas_app/core/theme/app_corners.dart'; +import 'package:vas_app/core/theme/typography.dart'; + +class MyDataTextField extends StatelessWidget { + final String text; + final bool isFlag; + // final TextEditingController textEditingController; + + const MyDataTextField({ + super.key, + required this.text, + required this.isFlag, + + // required this.textEditingController, + }); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(bottom: 15.0), + child: Container( + width: double.infinity, + height: 60, + alignment: Alignment.centerLeft, + padding: const EdgeInsets.only(left: 15), + decoration: BoxDecoration( + color: AppColors.gray.shade30, + borderRadius: AppCorners.radius15, + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), // Цвет тени + spreadRadius: 0, // Радиус размытия + blurRadius: 1, // Радиус размытия тени + offset: const Offset( + 0, + 2, + ), // Смещение тени (горизонтальное, вертикальное) + ), + ], + ), + child: Row( + children: [ + isFlag + ? Container( + decoration: BoxDecoration( + borderRadius: AppCorners.radius25, + ), + child: SvgPicture.asset( + VectorAssets.icRussia, + width: 30, + height: 30, + fit: BoxFit.fill, + clipBehavior: Clip.antiAlias, + ), + ) + : const SizedBox(), + Flexible( + child: TextFormField( + // controller: textEditingController, + initialValue: text, + // readOnly: true, + decoration: InputDecoration( + hintStyle: TextStyle(color: Colors.grey.shade400), + filled: true, + fillColor: Colors.grey.shade200, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(12), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(12), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(12), + ), + ), + // obscureText: true, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/feature/app/routing/path_files.dart b/lib/feature/app/routing/path_files.dart index 2982701..82826dc 100644 --- a/lib/feature/app/routing/path_files.dart +++ b/lib/feature/app/routing/path_files.dart @@ -9,9 +9,8 @@ import 'package:vas_app/feature/auth_page/presentation/pages/auth_page.dart'; import 'package:vas_app/feature/main_page/presentation/pages/main_page.dart'; import 'package:vas_app/feature/profile_page/presentation/pages/my_data_page.dart'; - import '../../../core/theme/typography.dart'; -import '../../history_page/presentation/pages/historia_page.dart'; +import '../../history_page/presentation/pages/history_page.dart'; import '../../order_page/presentation/pages/order_page.dart'; import '../../profile_page/presentation/pages/profile_page.dart'; import 'route_path.dart'; diff --git a/lib/feature/history_page/presentation/pages/historia_page.dart b/lib/feature/history_page/presentation/pages/history_page.dart similarity index 100% rename from lib/feature/history_page/presentation/pages/historia_page.dart rename to lib/feature/history_page/presentation/pages/history_page.dart diff --git a/lib/feature/profile_page/presentation/pages/my_data_page.dart b/lib/feature/profile_page/presentation/pages/my_data_page.dart index c8c184e..37a90b0 100644 --- a/lib/feature/profile_page/presentation/pages/my_data_page.dart +++ b/lib/feature/profile_page/presentation/pages/my_data_page.dart @@ -3,12 +3,29 @@ import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:flutter_svg/svg.dart'; import 'package:vas_app/core/resources/assets/resources.dart'; import 'package:vas_app/core/theme/app_colors.dart'; +import 'package:vas_app/core/theme/button_style.dart'; import 'package:vas_app/core/theme/typography.dart'; +import 'package:vas_app/core/widgets/my_data_textfield.dart'; import 'package:vas_app/feature/app/routing/route_path.dart'; -class MyDataPage extends StatelessWidget { - const MyDataPage({Key? key}) : super(key: key); +class MyDataPage extends StatefulWidget { + const MyDataPage({ + super.key, + }); + static String name = RoutePath.myDataPagePath; + + @override + State createState() => _MyDataPageState(); +} + +class _MyDataPageState extends State { + // TODO Надо подумать на счет логики изменения данных + // final TextEditingController _nameController = TextEditingController(); + // final TextEditingController _surnameController = TextEditingController(); + // final TextEditingController _phoneController = TextEditingController(); + // final TextEditingController _emailController = TextEditingController(); + @override Widget build(BuildContext context) { return Scaffold( @@ -30,72 +47,101 @@ class MyDataPage extends StatelessWidget { }, ), ), - body: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: AnimationConfiguration.toStaggeredList( - duration: const Duration(milliseconds: 1400), - childAnimationBuilder: (widget) => SlideAnimation( - verticalOffset: 50.0, - curve: Curves.easeOut, - child: FadeInAnimation( - child: widget, - ), - ), - children: [ - Center( - child: Padding( - padding: const EdgeInsets.only(top: 15.0, left: 15, right: 15), - child: SizedBox( - height: 150, - width: 150, - child: CircleAvatar( - child: SvgPicture.asset( - VectorAssets.icProfileActive, - width: 150, - height: 150, - fit: BoxFit.cover, - ), - ), + body: ListView( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: AnimationConfiguration.toStaggeredList( + duration: const Duration(milliseconds: 1400), + childAnimationBuilder: (widget) => SlideAnimation( + verticalOffset: 50.0, + curve: Curves.easeOut, + child: FadeInAnimation( + child: widget, ), ), - ), - const SizedBox(height: 30), - GestureDetector( - onTap: () {}, - child: Center( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 15.0), - child: Column( - children: [ - Text( - 'Редактировать', - style: AppTypography.font16Regular.copyWith( - fontWeight: FontWeight.w400, - color: AppColors.blue200, + children: [ + Center( + child: Padding( + padding: + const EdgeInsets.only(top: 15.0, left: 15, right: 15), + child: SizedBox( + height: 150, + width: 150, + child: CircleAvatar( + child: SvgPicture.asset( + VectorAssets.icProfileActive, + width: 150, + height: 150, + fit: BoxFit.cover, ), ), - SizedBox( - height: 30, - ), - Container( - width: double.infinity, - height: 60, - alignment: Alignment.centerLeft, - padding: const EdgeInsets.only(left: 15), - decoration: BoxDecoration( - color: AppColors.gray.shade30, - borderRadius: BorderRadius.circular(15), - shape: BoxShape.rectangle, - ), - child: Text('Никита'), + ), + ), + ), + const SizedBox(height: 30), + GestureDetector( + onTap: () {}, + child: Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 15.0), + child: Column( + children: [ + Text( + 'Редактировать', + style: AppTypography.font16Regular.copyWith( + fontWeight: FontWeight.w400, + color: AppColors.blue200, + ), + ), + const SizedBox( + height: 30, + ), + const MyDataTextField( + text: 'Никита', + isFlag: false, + // textEditingController: _nameController, + ), + const MyDataTextField( + text: 'Алексеевич', + isFlag: false, + // textEditingController: _surnameController, + ), + const MyDataTextField( + text: '+7 999 999 99 99', + isFlag: true, + // textEditingController: _phoneController, + ), + const MyDataTextField( + text: 'nikita2024@yandex.ru', + isFlag: false, + // textEditingController: _emailController, + ), + const SizedBox( + height: 30, + ), + Center( + child: ElevatedButton( + style: AppButtonStyle.primaryStyleOrange, + onPressed: () {}, + child: Text( + 'Сохранить изменения', + style: AppTypography.font18Regular.copyWith( + color: AppColors.white, + fontWeight: FontWeight.w700, + ), + ), + ), + ), + ], ), - ], + ), ), ), - ), + ], ), - ], - ), + ), + ], ), ); }