From eb75952b8e4ffcc94edea33e1dadd2e7759766e6 Mon Sep 17 00:00:00 2001 From: amirrezaghabeli Date: Sun, 19 Apr 2026 12:37:39 +0330 Subject: [PATCH] profile tabs fixed --- assets/icons/editting.svg | 5 + lib/core/constants/assets.dart | 1 + lib/views/profile/pages/d_profile_page.dart | 176 +++++------------ lib/views/profile/pages/m_profile_page.dart | 6 +- lib/views/profile/pages/t_profile_page.dart | 140 +++----------- .../widgets/edit_key_word_bottom_sheet.dart | 123 ++++++++++++ lib/views/profile/widgets/members_tab.dart | 116 ++++++++++++ lib/views/profile/widgets/subject_tab.dart | 177 ++++++++++++++++++ 8 files changed, 492 insertions(+), 252 deletions(-) create mode 100644 assets/icons/editting.svg create mode 100644 lib/views/profile/widgets/edit_key_word_bottom_sheet.dart create mode 100644 lib/views/profile/widgets/members_tab.dart create mode 100644 lib/views/profile/widgets/subject_tab.dart diff --git a/assets/icons/editting.svg b/assets/icons/editting.svg new file mode 100644 index 0000000..b055f45 --- /dev/null +++ b/assets/icons/editting.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/lib/core/constants/assets.dart b/lib/core/constants/assets.dart index abc5a4f..7b1994e 100644 --- a/lib/core/constants/assets.dart +++ b/lib/core/constants/assets.dart @@ -71,6 +71,7 @@ class AssetsManager { //profile page static const sun = 'assets/icons/sun.svg'; static const moon = 'assets/icons/moon.svg'; + static const editting = 'assets/icons/editting.svg'; //Liked tenders static const trash = 'assets/icons/trash.svg'; diff --git a/lib/views/profile/pages/d_profile_page.dart b/lib/views/profile/pages/d_profile_page.dart index 0403d93..eb6cdc9 100644 --- a/lib/views/profile/pages/d_profile_page.dart +++ b/lib/views/profile/pages/d_profile_page.dart @@ -1,19 +1,17 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/view_models/profile_view_model.dart'; -import '../../../core/constants/assets.dart'; import '../../../core/constants/common_strings.dart'; import '../../../core/theme/colors.dart'; import '../../../core/utils/app_toast.dart'; -import '../../../core/utils/size_config.dart'; import '../../../view_models/auth_view_model.dart'; import '../../shared/desktop_navigation_widget.dart'; import '../strings/profile_strings.dart'; -import '../widgets/theme_toggle.dart'; -import '../widgets/title_description.dart'; +import '../widgets/main_data_tab.dart'; +import '../widgets/members_tab.dart'; +import '../widgets/profile_tab_bar.dart'; class DesktopProfilePage extends StatefulWidget { const DesktopProfilePage({super.key}); @@ -22,12 +20,15 @@ class DesktopProfilePage extends StatefulWidget { State createState() => _DesktopProfilePageState(); } -class _DesktopProfilePageState extends State { +class _DesktopProfilePageState extends State + with SingleTickerProviderStateMixin { late ProfileViewModel viewModel; + late final TabController tabController; @override void initState() { super.initState(); viewModel = context.read(); + tabController = TabController(length: 3, vsync: this); viewModel.addListener(_profileListener); } @@ -56,150 +57,57 @@ class _DesktopProfilePageState extends State { const DesktopNavigationWidget( currentIndex: 4, // Tenders index ), - Consumer( - builder: (context, viewModel, child) { - if (viewModel.isLoading) { - return const Expanded( - child: Center( + Expanded( + child: Consumer( + builder: (context, viewModel, child) { + if (viewModel.isLoading) { + return const Center( child: CircularProgressIndicator( color: AppColors.secondary50, ), - ), - ); - } - if (viewModel.errorMessage != null) { - return Expanded( - child: Center(child: Text(viewModel.errorMessage!)), - ); - } + ); + } + if (viewModel.errorMessage != null) { + return Center(child: Text(viewModel.errorMessage!)); + } - if (viewModel.profileData == null) { - return const Expanded( - child: Center(child: Text(CommonStrings.noData)), - ); - } + if (viewModel.profileData == null) { + return const Center(child: Text(CommonStrings.noData)); + } - return Expanded( - child: SingleChildScrollView( + return SizedBox( + width: 740, + height: double.infinity, child: Column( children: [ - SizedBox( - width: 740, - child: Column( + const SizedBox(height: 46), + ProfileTabBar( + controller: tabController, + titles: [ + ProfileStrings.mainDataTab, + ProfileStrings.membersTab, + ProfileStrings.subjectTab, + ], + ), + Expanded( + child: TabBarView( + controller: tabController, children: [ - SizedBox(height: 36.0.h()), - TitleDescription( - title: ProfileStrings.fullname, - description: - viewModel.profileData!.fullName ?? '', - ), - TitleDescription( - title: ProfileStrings.username, - description: - viewModel.profileData!.username ?? '', - ), - TitleDescription( - title: ProfileStrings.email, - description: viewModel.profileData!.email ?? '', - ), - TitleDescription( - title: ProfileStrings.phone, - description: viewModel.profileData!.phone ?? '', - ), - TitleDescription( - title: ProfileStrings.companyName, - description: - viewModel - .profileData! - .companies! - .first - .name ?? - '', - ), - - SizedBox(height: 24.0.h()), - // Theme Toggle - Align( - alignment: AlignmentDirectional.centerStart, - child: Text( - ProfileStrings.settings, - style: TextStyle( - fontSize: 20.0.sp(), - fontWeight: FontWeight.w600, - color: AppColors.grey70, - ), - ), - ), - SizedBox(height: 36.0.h()), - _themeChangeRow(), - SizedBox(height: 24.0.h()), - Divider( - color: AppColors.dividerColor, - thickness: 1, - ), - SizedBox(height: 24.0.h()), - // Spacer(), - Align( - alignment: AlignmentDirectional.centerEnd, - child: InkWell( - onTap: () => viewModel.logout(), - borderRadius: BorderRadius.circular(100), - child: Container( - width: 156, - height: 56.0.h(), - decoration: BoxDecoration( - color: AppColors.primary20, - borderRadius: BorderRadius.circular(100), - ), - alignment: Alignment.center, - child: Text( - ProfileStrings.logout, - style: TextStyle( - fontSize: 14.0.sp(), - fontWeight: FontWeight.w500, - color: AppColors.primaryColor, - ), - ), - ), - ), + MainDataTab( + profileData: viewModel.profileData!, + onLogout: () => viewModel.logout(), ), + const MembersTab(), + const Center(child: Text('Subject Tab Content')), ], ), ), ], ), - ), - ); - }, - ), - ], - ), - ); - } - - Widget _themeChangeRow() { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 8.0.w()), - child: Row( - children: [ - Text( - ProfileStrings.appTheme, - style: TextStyle( - fontSize: 16.0.sp(), - fontWeight: FontWeight.w400, - color: AppColors.grey70, + ); + }, ), ), - const Spacer(), - SvgPicture.asset(AssetsManager.sun), - SizedBox(width: 12.0.w()), - SizedBox( - width: 52.0.w(), - height: 32.0.h(), - child: const ThemeToggle(), - ), - SizedBox(width: 12.0.w()), - SvgPicture.asset(AssetsManager.moon), ], ), ); diff --git a/lib/views/profile/pages/m_profile_page.dart b/lib/views/profile/pages/m_profile_page.dart index d507a09..9715c4a 100644 --- a/lib/views/profile/pages/m_profile_page.dart +++ b/lib/views/profile/pages/m_profile_page.dart @@ -11,7 +11,9 @@ import '../../../core/utils/size_config.dart'; import '../../../view_models/auth_view_model.dart'; import '../../shared/tender_app_bar.dart'; import '../strings/profile_strings.dart'; +import '../widgets/members_tab.dart'; import '../widgets/profile_tab_bar.dart'; +import '../widgets/subject_tab.dart'; class MobileProfilePage extends StatefulWidget { const MobileProfilePage({super.key}); @@ -94,8 +96,8 @@ class _MobileProfilePageState extends State profileData: viewModel.profileData!, onLogout: () => viewModel.logout(), ), - const Center(child: Text('Members Tab Content')), - const Center(child: Text('Subject Tab Content')), + const MembersTab(), + const SubjectTab(), ], ), ), diff --git a/lib/views/profile/pages/t_profile_page.dart b/lib/views/profile/pages/t_profile_page.dart index ab3e8fe..83ea665 100644 --- a/lib/views/profile/pages/t_profile_page.dart +++ b/lib/views/profile/pages/t_profile_page.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; -import 'package:tm_app/core/constants/assets.dart'; import 'package:tm_app/core/constants/common_strings.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/view_models/profile_view_model.dart'; @@ -13,8 +11,9 @@ import '../../../view_models/auth_view_model.dart'; import '../../shared/tablet_navigation_widget.dart'; import '../../shared/tender_app_bar.dart'; import '../strings/profile_strings.dart'; -import '../widgets/theme_toggle.dart'; -import '../widgets/title_description.dart'; +import '../widgets/main_data_tab.dart'; +import '../widgets/members_tab.dart'; +import '../widgets/profile_tab_bar.dart'; class TabletProfilePage extends StatefulWidget { const TabletProfilePage({super.key}); @@ -23,12 +22,15 @@ class TabletProfilePage extends StatefulWidget { State createState() => _TabletProfilePageState(); } -class _TabletProfilePageState extends State { +class _TabletProfilePageState extends State + with SingleTickerProviderStateMixin { late ProfileViewModel viewModel; + late final TabController tabController; @override void initState() { super.initState(); viewModel = context.read(); + tabController = TabController(length: 3, vsync: this); viewModel.addListener(_profileListener); } @@ -84,91 +86,25 @@ class _TabletProfilePageState extends State { ), child: Column( children: [ - SizedBox(height: 128.0.h()), - TitleDescription( - title: ProfileStrings.fullname, - description: viewModel.profileData!.fullName ?? '', + ProfileTabBar( + controller: tabController, + titles: [ + ProfileStrings.mainDataTab, + ProfileStrings.membersTab, + ProfileStrings.subjectTab, + ], ), - TitleDescription( - title: ProfileStrings.username, - description: viewModel.profileData!.username ?? '', - ), - TitleDescription( - title: ProfileStrings.email, - description: viewModel.profileData!.email ?? '', - ), - TitleDescription( - title: ProfileStrings.phone, - description: viewModel.profileData!.phone ?? '', - ), - TitleDescription( - title: ProfileStrings.companyName, - description: - viewModel.profileData!.companies!.first.name ?? '', - ), - // TitleDescription( - // title: ProfileStrings.companyName, - // description: viewModel.companyProfileData!.name!, - // ), - // TitleDescription( - // title: ProfileStrings.nationalId, - // description: viewModel.companyProfileData!.id!, - // ), - // TitleDescription( - // title: ProfileStrings.registrationNumber, - // description: - // viewModel.companyProfileData!.registrationNumber!, - // ), - // const TitleDescription( - // title: ProfileStrings.businessType, - // description: '-', - // ), - // TitleDescription( - // title: ProfileStrings.founded, - // description: - // viewModel.companyProfileData!.foundedYear!.toString(), - // ), - SizedBox(height: 24.0.h()), - // Theme Toggle - Align( - alignment: AlignmentDirectional.centerStart, - child: Text( - ProfileStrings.settings, - style: TextStyle( - fontSize: 20.0.sp(), - fontWeight: FontWeight.w600, - color: AppColors.grey70, - ), - ), - ), - SizedBox(height: 36.0.h()), - _themeChangeRow(), - SizedBox(height: 24.0.h()), - Divider(color: AppColors.dividerColor, thickness: 1), - SizedBox(height: 24.0.h()), - // Spacer(), - Align( - alignment: AlignmentDirectional.centerStart, - child: InkWell( - onTap: () => viewModel.logout(), - borderRadius: BorderRadius.circular(100), - child: Container( - width: 156, - height: 56.0.h(), - decoration: BoxDecoration( - color: AppColors.primary20, - borderRadius: BorderRadius.circular(100), + Expanded( + child: TabBarView( + controller: tabController, + children: [ + MainDataTab( + profileData: viewModel.profileData!, + onLogout: () => viewModel.logout(), ), - alignment: Alignment.center, - child: Text( - ProfileStrings.logout, - style: TextStyle( - fontSize: 14.0.sp(), - fontWeight: FontWeight.w500, - color: AppColors.primaryColor, - ), - ), - ), + const MembersTab(), + const Center(child: Text('Subject Tab Content')), + ], ), ), ], @@ -179,32 +115,4 @@ class _TabletProfilePageState extends State { }, ); } - - Widget _themeChangeRow() { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 8.0.w()), - child: Row( - children: [ - Text( - ProfileStrings.appTheme, - style: TextStyle( - fontSize: 16.0.sp(), - fontWeight: FontWeight.w400, - color: AppColors.grey70, - ), - ), - const Spacer(), - SvgPicture.asset(AssetsManager.sun), - SizedBox(width: 12.0.w()), - SizedBox( - width: 52.0.w(), - height: 32.0.h(), - child: const ThemeToggle(), - ), - SizedBox(width: 12.0.w()), - SvgPicture.asset(AssetsManager.moon), - ], - ), - ); - } } diff --git a/lib/views/profile/widgets/edit_key_word_bottom_sheet.dart b/lib/views/profile/widgets/edit_key_word_bottom_sheet.dart new file mode 100644 index 0000000..9ec3a52 --- /dev/null +++ b/lib/views/profile/widgets/edit_key_word_bottom_sheet.dart @@ -0,0 +1,123 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:tm_app/core/utils/size_config.dart'; +import 'package:tm_app/views/login/widgets/widgets.dart'; + +import '../../../core/constants/assets.dart'; +import '../../../core/theme/colors.dart'; + +class EditKeyWordBottomSheet extends StatelessWidget { + const EditKeyWordBottomSheet({super.key}); + + @override + Widget build(BuildContext context) { + return Wrap( + children: [ + Container( + width: double.infinity, + padding: EdgeInsets.symmetric( + horizontal: 24.0.w(), + vertical: 24.0.h(), + ), + decoration: BoxDecoration( + color: AppColors.backgroundColor, + borderRadius: const BorderRadius.vertical(top: Radius.circular(24)), + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Edit Key Word', + style: TextStyle( + fontSize: 20.0.sp(), + fontWeight: FontWeight.w600, + ), + ), + SvgPicture.asset( + AssetsManager.closeCircle, + width: 20.0.w(), + height: 20.0.w(), + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + AppColors.grey60, + BlendMode.srcIn, + ), + ), + ], + ), + SizedBox(height: 16.0.h()), + Divider(color: AppColors.grey20), + SizedBox(height: 24.0.h()), + TextField( + decoration: InputDecoration( + hintText: 'Key Word', + hintStyle: TextStyle( + fontSize: 16.0.sp(), + fontWeight: FontWeight.w400, + color: AppColors.grey60, + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: AppColors.grey40), + borderRadius: const BorderRadius.all(Radius.circular(12)), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: AppColors.grey40), + borderRadius: const BorderRadius.all(Radius.circular(12)), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: AppColors.grey40), + borderRadius: const BorderRadius.all(Radius.circular(12)), + ), + errorBorder: const OutlineInputBorder( + borderSide: BorderSide(color: AppColors.errorColor), + borderRadius: BorderRadius.all(Radius.circular(12)), + ), + ), + ), + SizedBox(height: 16.0.h()), + Wrap( + spacing: 8, + runSpacing: 16.0.h(), + children: [ + _chip(label: 'UIUX', backgroundColor: Colors.green[200]!), + _chip( + label: 'Lorem ipsum', + backgroundColor: Colors.orange[100]!, + ), + _chip(label: 'sample', backgroundColor: Colors.grey[300]!), + _chip(label: 'Unknown', backgroundColor: Colors.red[200]!), + _chip( + label: 'Lorem ipsum 02', + backgroundColor: Colors.blue[100]!, + ), + ], + ), + SizedBox(height: 32.0.h()), + BaseButton( + isEnabled: true, + text: 'Submit Request', + backgroundColor: AppColors.primary20, + textColor: AppColors.mainBlue, + onPressed: () {}, + ), + ], + ), + ), + ], + ); + } + + Widget _chip({required String label, required Color backgroundColor}) { + return InputChip( + label: Text(label), + backgroundColor: backgroundColor, + onDeleted: () {}, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: const BorderSide(color: Colors.transparent), + ), + ); + } +} diff --git a/lib/views/profile/widgets/members_tab.dart b/lib/views/profile/widgets/members_tab.dart new file mode 100644 index 0000000..051aba2 --- /dev/null +++ b/lib/views/profile/widgets/members_tab.dart @@ -0,0 +1,116 @@ +import 'package:flutter/material.dart'; +import 'package:tm_app/core/theme/colors.dart'; +import 'package:tm_app/core/utils/size_config.dart'; + +class MembersTab extends StatelessWidget { + const MembersTab({super.key}); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + SizedBox(height: 36.0.h()), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + _columnName('Full Name'), + _columnName('Position'), + _columnName('Access level'), + ], + ), + SizedBox(height: 24.0.h()), + Divider(color: AppColors.grey50), + SizedBox(height: 24.0.h()), + Expanded( + child: ListView.separated( + scrollDirection: Axis.vertical, + itemBuilder: (context, index) { + final member = _members[index]; + return _member( + fullName: member.fullName, + position: member.position, + accessLevel: member.accessLevel, + ); + }, + separatorBuilder: + (context, index) => + Divider(color: AppColors.grey50.withValues(alpha: 0.2)), + itemCount: _members.length, + ), + ), + ], + ); + } + + Widget _columnName(String text) { + return SizedBox( + width: 100.0.w(), + child: Text( + text, + style: TextStyle( + fontSize: 16.0.sp(), + fontWeight: FontWeight.w400, + color: AppColors.grey70, + ), + ), + ); + } + + Widget _member({ + required String fullName, + required String position, + required String accessLevel, + }) { + return SizedBox( + height: 43.0.h(), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + _memberDetail(title: fullName), + // SizedBox(width: 40.0.w()), + _memberDetail(title: position), + // SizedBox(width: 40.0.w()), + _memberDetail(title: accessLevel), + ], + ), + ); + } + + Widget _memberDetail({required String title}) { + return SizedBox( + width: 100.0.w(), + child: Align( + alignment: Alignment.centerLeft, + child: Text( + title, + maxLines: 1, + overflow: TextOverflow.ellipsis, + + style: TextStyle( + fontSize: 16.0.sp(), + fontWeight: FontWeight.w400, + color: AppColors.grey80, + ), + ), + ), + ); + } +} + +class Member { + final String fullName; + final String position; + final String accessLevel; + + Member({ + required this.fullName, + required this.position, + required this.accessLevel, + }); +} + +final List _members = [ + Member(fullName: 'Rick Novak', position: 'Director', accessLevel: 'Level 01'), + Member(fullName: 'Sara Novak', position: 'Director', accessLevel: 'Level 01'), + Member(fullName: 'Sarah Connor', position: 'Chief', accessLevel: 'Level 02'), +]; diff --git a/lib/views/profile/widgets/subject_tab.dart b/lib/views/profile/widgets/subject_tab.dart new file mode 100644 index 0000000..6f0a2a9 --- /dev/null +++ b/lib/views/profile/widgets/subject_tab.dart @@ -0,0 +1,177 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:tm_app/core/constants/assets.dart'; +import 'package:tm_app/core/theme/colors.dart'; +import 'package:tm_app/core/utils/size_config.dart'; + +import 'edit_key_word_bottom_sheet.dart'; + +class SubjectTab extends StatelessWidget { + const SubjectTab({super.key}); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + SizedBox(height: 36.0.h()), + _companyActivity(companyActivity: 'IT'), + SizedBox(height: 24.0.h()), + _budget(budget: 'Telecom Solutions GmbH'), + SizedBox(height: 24.0.h()), + _keyWord( + onEditPressed: () { + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (_) { + return const EditKeyWordBottomSheet(); + }, + ); + }, + ), + SizedBox(height: 16.0.h()), + Wrap( + spacing: 8, + runSpacing: 16.0.h(), + children: [ + _chip(label: 'UIUX', backgroundColor: Colors.green[200]!), + _chip(label: 'Lorem ipsum', backgroundColor: Colors.orange[100]!), + _chip(label: 'sample', backgroundColor: Colors.grey[300]!), + _chip(label: 'Unknown', backgroundColor: Colors.red[200]!), + _chip(label: 'Lorem ipsum 02', backgroundColor: Colors.blue[100]!), + ], + ), + SizedBox(height: 24.0.h()), + Divider(color: AppColors.grey20), + _location(onEditePressed: () {}), + ], + ); + } + + Widget _companyActivity({required String companyActivity}) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 8.0.w()), + child: SizedBox( + height: 43.0.h(), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Company Activity ', + style: TextStyle( + fontSize: 16.0.sp(), + fontWeight: FontWeight.w400, + color: AppColors.grey60, + ), + ), + Text( + companyActivity, + style: TextStyle( + fontSize: 16.0.sp(), + fontWeight: FontWeight.w400, + color: AppColors.grey80, + ), + ), + ], + ), + ), + ); + } + + Widget _budget({required String budget}) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 8.0.w()), + child: SizedBox( + height: 43.0.h(), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Budget', + style: TextStyle( + fontSize: 16.0.sp(), + fontWeight: FontWeight.w400, + color: AppColors.grey60, + ), + ), + Text( + budget, + style: TextStyle( + fontSize: 16.0.sp(), + fontWeight: FontWeight.w400, + color: AppColors.grey80, + ), + ), + ], + ), + ), + ); + } + + Widget _keyWord({required VoidCallback onEditPressed}) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 8.0.w()), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + 'Budget', + style: TextStyle( + fontSize: 16.0.sp(), + fontWeight: FontWeight.w400, + color: AppColors.grey60, + ), + ), + IconButton( + onPressed: onEditPressed, + icon: SvgPicture.asset( + AssetsManager.editting, + colorFilter: ColorFilter.mode(AppColors.grey70, BlendMode.srcIn), + ), + ), + ], + ), + ); + } + + Widget _chip({required String label, required Color backgroundColor}) { + return Chip( + label: Text(label), + backgroundColor: backgroundColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: const BorderSide(color: Colors.transparent), + ), + ); + } + + Widget _location({required VoidCallback onEditePressed}) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 8.0.w()), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + 'Location', + style: TextStyle( + fontSize: 16.0.sp(), + fontWeight: FontWeight.w400, + color: AppColors.grey60, + ), + ), + IconButton( + onPressed: onEditePressed, + icon: SvgPicture.asset( + AssetsManager.editting, + colorFilter: ColorFilter.mode(AppColors.grey70, BlendMode.srcIn), + ), + ), + ], + ), + ); + } +}