diff --git a/assets/images/settings_screen/svg/wallet_settings.svg b/assets/images/settings_screen/svg/wallet_settings.svg
new file mode 100644
index 0000000..c0d8a1c
--- /dev/null
+++ b/assets/images/settings_screen/svg/wallet_settings.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/language/ar.json b/assets/language/ar.json
index 7d4912c..0a10353 100644
--- a/assets/language/ar.json
+++ b/assets/language/ar.json
@@ -112,7 +112,7 @@
"walletDetailsTitle": "تفاصيل",
"withdrawalScreenTitle": "أدخل تفاصيل البنك",
"depositScreenTitle": "إخطار الإيداع",
- "status": "الحالة",
+ "status": "الحالة",
"paymentMethod": "طريقة الدفع",
"accountName": "اسم الحساب",
"accountHolderName": "اسم صاحب الحساب/المستفيد",
@@ -269,10 +269,11 @@
"accountNo" : "رقم الحساب",
"swiftCode" :"رمز السرعة",
"bankAddress" : "عنوان البنك",
- "clientId" : "معرف العميل"
-
-
-
+ "clientId" : "معرف العميل",
+ "bankDetails" : "التفاصيل المصرفية",
+ "addBankDetails" : "إضافة تفاصيل البنك",
+ "updateBankDetails" : "تحديث تفاصيل البنك",
+ "yourAccountDetails" : "تفاصيل حسابك"
}
\ No newline at end of file
diff --git a/assets/language/en.json b/assets/language/en.json
index 958b35a..25bc0fb 100644
--- a/assets/language/en.json
+++ b/assets/language/en.json
@@ -110,7 +110,7 @@
"refund": "Refund",
"investment": "Investment",
"walletDetailsTitle": "Details",
- "withdrawalScreenTitle": "Enter bank details",
+ "withdrawalScreenTitle": "Enter bank details",
"depositScreenTitle": "Deposit notification",
"status": "Status",
"paymentMethod": "Payment Method",
@@ -269,7 +269,11 @@
"accountNo" : "Account No.",
"swiftCode" :"SWIFT Code",
"bankAddress" : "Bank Address",
- "clientId" : "Client ID"
+ "clientId" : "Client ID",
+ "bankDetails" : "Bank details",
+ "addBankDetails" : "Add bank details",
+ "updateBankDetails" : "Update bank details",
+ "yourAccountDetails" : "Your account Details"
diff --git a/lib/core/routes/route_name.dart b/lib/core/routes/route_name.dart
index 2142f01..9470091 100644
--- a/lib/core/routes/route_name.dart
+++ b/lib/core/routes/route_name.dart
@@ -78,4 +78,7 @@ class RouteName {
static const String investDetailScreen = "investDetailScreen";
static const String investPaymentScreen = "investPaymentScreen";
static const String confirmInvestScreen = "confirmInvestScreen";
+
+ //Bank Details
+ static const String addBankDetailsScreen = "addBankDetailsScreen";
}
diff --git a/lib/core/routes/routes.dart b/lib/core/routes/routes.dart
index cb9a350..580a789 100644
--- a/lib/core/routes/routes.dart
+++ b/lib/core/routes/routes.dart
@@ -33,6 +33,7 @@ import 'package:tanami_app/shared/components/no_internet.dart';
import '../../features/MainScreens/Wallet/presentation/pages/deposit/deposit_completed_screen.dart';
import '../../features/MainScreens/main_screen.dart';
+import '../../features/bankDetails/presentation/pages/add_bank_details_screen.dart';
import '../../features/forgotPassword/presentation/pages/restore_password_phone_verification_screen.dart';
import '../../features/login/presentation/pages/login_screen.dart';
import '../../features/register/presentation/pages/register_user_details_screen.dart';
@@ -53,7 +54,7 @@ final goRouter = GoRouter(
path: RouteName.splashScreen,
builder: (context, state) {
// context.read().add(GetCountry());
- return const SplashScreen();
+ return const SplashScreen(); //const MainScreen();
},
routes: [
GoRoute(
@@ -139,6 +140,13 @@ final goRouter = GoRouter(
return const AcademyDetailsScreen();
},
),
+ GoRoute(
+ name: RouteName.addBankDetailsScreen,
+ path: RouteName.addBankDetailsScreen,
+ builder: (context, state) {
+ return const AddBankDetails();
+ },
+ ),
GoRoute(
name: RouteName.pinScreen,
path: "${RouteName.pinScreen}/:fromScreen",
diff --git a/lib/core/styles/app_images.dart b/lib/core/styles/app_images.dart
index 85e5a7f..a88fc81 100644
--- a/lib/core/styles/app_images.dart
+++ b/lib/core/styles/app_images.dart
@@ -118,6 +118,8 @@ class AppImages {
'assets/images/invest_screen/svg/time_square.svg';
static const String applePayIcon =
'assets/images/invest_screen/svg/apple_pay.svg';
+ static const String walletSettingsIcon =
+ 'assets/images/settings_screen/svg/wallet_settings.svg';
//No Internet
static const String noInternetImage =
diff --git a/lib/core/styles/app_text.dart b/lib/core/styles/app_text.dart
index 85378b9..5824580 100644
--- a/lib/core/styles/app_text.dart
+++ b/lib/core/styles/app_text.dart
@@ -236,6 +236,8 @@ class AppText {
static const String swiftCode = "swiftCode";
static const String bankAddress = "bankAddress";
static const String clientId = "clientId";
+ static const String updateBankDetails = "updateBankDetails";
+ static const String yourAccountDetails = "yourAccountDetails";
//Settings
static const String settingsText = "settingsText";
@@ -266,6 +268,8 @@ class AppText {
static const String changePasswordText = "changePasswordText";
static const String newPasswordText = "newPasswordText";
static const String currentPsswordText = "currentPsswordText";
+ static const String bankDetails = "bankDetails";
+ static const String addBankDetails = "addBankDetails";
//Contact Admin
static const String byPhoneText = "byPhoneText";
diff --git a/lib/features/MainScreens/Settings/presentation/pages/settings_layout.dart b/lib/features/MainScreens/Settings/presentation/pages/settings_layout.dart
index 349615f..78d493d 100644
--- a/lib/features/MainScreens/Settings/presentation/pages/settings_layout.dart
+++ b/lib/features/MainScreens/Settings/presentation/pages/settings_layout.dart
@@ -3,10 +3,12 @@ import 'package:gap/gap.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/features/MainScreens/Settings/presentation/widgets/support_settings_section.dart';
+import '../widgets/add_bank_details_section.dart';
import '../widgets/general_settings_section.dart';
import '../widgets/kyc_card.dart';
import '../widgets/privacy_settings_section.dart';
import '../widgets/settings_bottom_section.dart';
+import '../widgets/user_account_section.dart';
class SettingsLayout extends StatelessWidget {
const SettingsLayout({super.key});
@@ -19,10 +21,14 @@ class SettingsLayout extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
+ const UserAccountSection(),
+ const Gap(15),
kycCard(context),
const Gap(15),
const GeneralSettingsSection(),
const Gap(15),
+ const BankDetailsSection(),
+ const Gap(15),
const PrivacySettingsSection(),
const Gap(15),
const SupportSettingsSection(),
diff --git a/lib/features/MainScreens/Settings/presentation/widgets/add_bank_details_section.dart b/lib/features/MainScreens/Settings/presentation/widgets/add_bank_details_section.dart
new file mode 100644
index 0000000..337502b
--- /dev/null
+++ b/lib/features/MainScreens/Settings/presentation/widgets/add_bank_details_section.dart
@@ -0,0 +1,47 @@
+import 'package:flutter/material.dart';
+import 'package:gap/gap.dart';
+import 'package:tanami_app/core/routes/route_name.dart';
+import 'package:tanami_app/core/routes/routes.dart';
+import 'package:tanami_app/core/styles/app_color.dart';
+import 'package:tanami_app/core/styles/app_images.dart';
+import 'package:tanami_app/core/styles/app_text.dart';
+import 'package:tanami_app/shared/components/text_widget.dart';
+
+import '../../../../../core/utils/language/localizations_delegate.dart';
+import 'settings_list_tile_item.dart';
+
+class BankDetailsSection extends StatelessWidget {
+ const BankDetailsSection({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ var localizations = AppLocalizations.of(context);
+ return Padding(
+ padding: const EdgeInsets.symmetric(
+ horizontal: 16,
+ ),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ TextWidget().text14W600(
+ localizations.translate(AppText.addBankDetails),
+ clr: AppColor.hintTextColor,
+ ),
+ const Gap(8),
+ SettingsListItem(
+ onTapFunc: () {
+ goRouter.pushNamed(RouteName.addBankDetailsScreen);
+ },
+ icon: AppImages.walletSettingsIcon,
+ title: AppText.bankDetails,
+ trailing: "",
+ ),
+ const Gap(10),
+ const Divider(
+ color: AppColor.academyCardTextColor,
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/features/MainScreens/Settings/presentation/widgets/user_account_section.dart b/lib/features/MainScreens/Settings/presentation/widgets/user_account_section.dart
new file mode 100644
index 0000000..977ef0a
--- /dev/null
+++ b/lib/features/MainScreens/Settings/presentation/widgets/user_account_section.dart
@@ -0,0 +1,110 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:gap/gap.dart';
+import 'package:tanami_app/core/styles/app_text.dart';
+import 'package:tanami_app/shared/components/text_widget.dart';
+
+import '../../../../../Globalconst.dart';
+import '../../../../../core/utils/language/localizations_delegate.dart';
+
+class UserAccountSection extends StatelessWidget {
+ const UserAccountSection({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ var localizations = AppLocalizations.of(context);
+ return Padding(
+ padding: const EdgeInsets.symmetric(
+ horizontal: 16,
+ ),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Container(
+ width: 1.sw,
+ padding: const EdgeInsets.only(
+ left: 12,
+ top: 12,
+ bottom: 12,
+ right: 12,
+ ),
+ decoration: ShapeDecoration(
+ color: const Color(0xFFF6F6F6),
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(22),
+ ),
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Expanded(
+ child: SizedBox(
+ height: 61,
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Container(
+ width: 41,
+ height: 41,
+ padding: const EdgeInsets.all(8),
+ decoration: ShapeDecoration(
+ color: const Color(0xFFDAEEE0),
+ shape: RoundedRectangleBorder(
+ side: const BorderSide(
+ width: 1, color: Color(0xFF709C81)),
+ borderRadius: BorderRadius.circular(22),
+ ),
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ TextWidget().text15W500(
+ 'AN',
+ clr: const Color(0xFF066123),
+ )
+ ],
+ ),
+ ),
+ const Gap(12),
+ Column(
+ mainAxisSize: MainAxisSize.min,
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ TextWidget().text14W500(
+ Globalconst.firstName.isEmpty
+ ? "User"
+ : Globalconst.firstName,
+ clr: const Color(0xFF191B1E),
+ ),
+ const Gap(4),
+ TextWidget().text11W500(
+ localizations
+ .translate(AppText.yourAccountDetails),
+ clr: const Color(0xFF8D8D8D),
+ ),
+ ],
+ ),
+ const Spacer(),
+ const Icon(
+ Icons.arrow_forward_ios_outlined,
+ color: Color(0xFF363636),
+ )
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ )
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/withdrawal_screen.dart b/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/withdrawal_screen.dart
index fa0ee48..c67404d 100644
--- a/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/withdrawal_screen.dart
+++ b/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/withdrawal_screen.dart
@@ -7,6 +7,7 @@ import 'package:tanami_app/core/routes/route_name.dart';
import 'package:tanami_app/core/routes/routes.dart';
import 'package:tanami_app/core/styles/app_text.dart';
+import '../../../../../../core/styles/app_color.dart';
import '../../../../../../core/utils/language/localizations_delegate.dart';
import '../../../../../../core/utils/text_formatter/comma_input_text_formatter.dart';
@@ -316,13 +317,34 @@ class _WithdrawalScreenState extends State {
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Text(
- localizations.translate(AppText.withdrawDetails),
- style: GoogleFonts.dmSans(
- color: Colors.black,
- fontSize: 15.sp,
- fontWeight: FontWeight.w700,
- ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ localizations
+ .translate(AppText.withdrawDetails),
+ style: GoogleFonts.dmSans(
+ color: Colors.black,
+ fontSize: 15.sp,
+ fontWeight: FontWeight.w700,
+ ),
+ ),
+ InkWell(
+ onTap: () {
+ goRouter.pushNamed(
+ RouteName.addBankDetailsScreen);
+ },
+ child: Text(
+ localizations
+ .translate(AppText.updateBankDetails),
+ style: GoogleFonts.dmSans(
+ color: AppColor.textLabelColor,
+ fontSize: 13.sp,
+ fontWeight: FontWeight.w500,
+ decoration: TextDecoration.underline),
+ ),
+ ),
+ ],
),
SizedBox(
height: 3.h,
@@ -375,7 +397,7 @@ class _WithdrawalScreenState extends State {
fontWeight: FontWeight.w400,
),
decoration: InputDecoration(
- hintText: 'Value',
+ hintText: titles[index],
hintStyle: GoogleFonts.dmSans(
color: const Color(0xFFC6C6C6),
fontSize: 16.sp,
diff --git a/lib/features/bankDetails/presentation/pages/add_bank_details_screen.dart b/lib/features/bankDetails/presentation/pages/add_bank_details_screen.dart
new file mode 100644
index 0000000..fa156a6
--- /dev/null
+++ b/lib/features/bankDetails/presentation/pages/add_bank_details_screen.dart
@@ -0,0 +1,119 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:gap/gap.dart';
+import 'package:google_fonts/google_fonts.dart';
+
+import '../../../../core/routes/routes.dart';
+import '../../../../core/styles/app_text.dart';
+import '../../../../core/utils/language/localizations_delegate.dart';
+import '../../../../shared/components/form_label_textfield.dart';
+
+class AddBankDetails extends StatelessWidget {
+ const AddBankDetails({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ TextEditingController accountNameText = TextEditingController();
+ TextEditingController accountNoText = TextEditingController();
+ TextEditingController ibanText = TextEditingController();
+ TextEditingController swiftCodeText = TextEditingController();
+ TextEditingController bankNameText = TextEditingController();
+ TextEditingController bankAddressText = TextEditingController();
+ var localizations = AppLocalizations.of(context);
+ return Scaffold(
+ backgroundColor: Colors.white,
+ bottomNavigationBar: Padding(
+ padding: MediaQuery.of(context).viewInsets,
+ child: GestureDetector(
+ onTap: () {
+ goRouter.pop();
+ },
+ child: Container(
+ margin: const EdgeInsets.all(10.0),
+ height: 65.h,
+ width: double.infinity,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(22.r),
+ color: const Color(0xFF004717),
+ ),
+ child: Center(
+ child: Text(
+ localizations.translate(AppText.submitText),
+ style: GoogleFonts.dmSans(
+ color: Colors.white,
+ fontSize: 14.sp,
+ fontWeight: FontWeight.w700,
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ appBar: AppBar(
+ backgroundColor: Colors.white,
+ elevation: 0,
+ scrolledUnderElevation: 0.0,
+ centerTitle: true,
+ title: Text(
+ localizations.translate(AppText.addBankDetails),
+ style: GoogleFonts.dmSans(
+ color: const Color(0xFF272727),
+ fontSize: 20.sp,
+ fontWeight: FontWeight.w700,
+ ),
+ ),
+ ),
+ body: Padding(
+ padding: const EdgeInsets.all(12.0),
+ child: SingleChildScrollView(
+ child: Column(
+ children: [
+ const Gap(20),
+ FormLabelTextField(
+ hintText: localizations.translate(AppText.accountName),
+ title: localizations.translate(AppText.accountName),
+ type: "first name",
+ textEditingController: accountNameText,
+ ),
+ const Gap(20),
+ FormLabelTextField(
+ hintText: localizations.translate(AppText.accountNo),
+ title: localizations.translate(AppText.accountNo),
+ type: "first name",
+ textEditingController: accountNoText,
+ ),
+ const Gap(20),
+ FormLabelTextField(
+ hintText: localizations.translate(AppText.iban),
+ title: localizations.translate(AppText.iban),
+ type: "first name",
+ textEditingController: ibanText,
+ ),
+ const Gap(20),
+ FormLabelTextField(
+ hintText: localizations.translate(AppText.swiftCode),
+ title: localizations.translate(AppText.swiftCode),
+ type: "first name",
+ textEditingController: swiftCodeText,
+ ),
+ const Gap(20),
+ FormLabelTextField(
+ hintText: localizations.translate(AppText.bankName),
+ title: localizations.translate(AppText.bankName),
+ type: "first name",
+ textEditingController: bankNameText,
+ ),
+ const Gap(20),
+ FormLabelTextField(
+ hintText: localizations.translate(AppText.bankAddress),
+ title: localizations.translate(AppText.bankAddress),
+ type: "first name",
+ textEditingController: bankAddressText,
+ ),
+ ],
+ ),
+ ),
+ ),
+ );
+ }
+}