From 6feefde6e244a465ee023daf314132e0fe1bdd50 Mon Sep 17 00:00:00 2001 From: jayesh Date: Wed, 10 Jul 2024 20:35:18 +0530 Subject: [PATCH] language localization --- assets/language/ar.json | 4 +- .../presentation/pages/academy_screen.dart | 4 +- .../widgets/academy_detail_section.dart | 5 +- .../widgets/academy_video_section.dart | 4 +- .../pages/invest_details_screen.dart | 4 +- .../presentation/pages/invest_layout.dart | 10 +- .../presentation/pages/invest_screen.dart | 4 +- .../pages/payment/invest_payment_screen.dart | 4 +- .../invest_closed_details_section.dart | 12 +- .../invest_detail_details_section.dart | 22 +- .../widgets/invest_detail_image_carousel.dart | 6 +- .../widgets/invest_details_section.dart | 15 +- .../invest_included_documents_section.dart | 4 +- .../widgets/invest_video_section.dart | 4 +- .../widgets/key_investment_section.dart | 4 +- .../Invest/presentation/widgets/kyc_card.dart | 10 +- .../confirm_invest_bottom_section.dart | 4 +- .../payment/confirm_invest_top_section.dart | 25 +- .../payment/invest_pay_bottom_section.dart | 8 +- .../payment/invest_pay_method_section.dart | 19 +- .../payment/invest_pay_top_section.dart | 33 +- .../investment_oversubscribed_dialog.dart | 10 +- .../presentation/pages/portfolio_layout.dart | 6 +- .../presentation/widgets/details_section.dart | 10 +- .../presentation/widgets/exited_card.dart | 8 +- .../widgets/included_documents_section.dart | 4 +- .../presentation/widgets/pending_card.dart | 8 +- .../presentation/pages/settings_screen.dart | 4 +- .../pages/deposit/deposit_layout.dart | 20 +- .../pages/deposit/deposit_screen.dart | 5 +- .../presentation/pages/deposit/preview.dart | 446 +++++++++--------- .../presentation/pages/filter_screen.dart | 37 +- .../Wallet/presentation/pages/kyc.dart | 14 +- .../presentation/pages/walletDetails.dart | 66 +-- .../presentation/pages/wallet_layout.dart | 100 ++-- .../presentation/pages/wallet_screen.dart | 8 +- .../pages/withdrawal/confirmation.dart | 33 +- .../pages/withdrawal/preview.dart | 31 +- .../pages/withdrawal/withdrawalScreen.dart | 29 +- .../widgets/deposit_pay_method_section.dart | 16 +- .../widgets/wallet_list_section.dart | 93 ++-- .../presentation/widgets/bottom_section.dart | 19 +- .../widgets/language_change_list.dart | 19 + lib/main.dart | 53 ++- .../components/common_bottom_navigation.dart | 12 +- 45 files changed, 723 insertions(+), 533 deletions(-) diff --git a/assets/language/ar.json b/assets/language/ar.json index e8fdcc4..cefa218 100644 --- a/assets/language/ar.json +++ b/assets/language/ar.json @@ -100,7 +100,7 @@ "submitText": "إرسال", "walletTitle": "رصيد المحفظة", "walletText": "محفظة", - "day": "اليوم", + "day": "اليوم", "filterTitle": "مرشحات", "onHold": "قيد الانتظار", "deposit": "إيداع", @@ -108,7 +108,7 @@ "withdrawal": "انسحاب", "yield": "عائد", "refund": "استرداد", - "investment": "استثمار", + "investment": " ", "walletDetailsTitle": "تفاصيل", "withdrawalScreenTitle": "أدخل تفاصيل البنك", "depositScreenTitle": "إخطار الإيداع", diff --git a/lib/features/MainScreens/Academy/presentation/pages/academy_screen.dart b/lib/features/MainScreens/Academy/presentation/pages/academy_screen.dart index 78a9774..5ed5055 100644 --- a/lib/features/MainScreens/Academy/presentation/pages/academy_screen.dart +++ b/lib/features/MainScreens/Academy/presentation/pages/academy_screen.dart @@ -4,6 +4,7 @@ import 'package:tanami_app/features/MainScreens/Academy/presentation/pages/acade import 'package:tanami_app/shared/components/text_widget.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; class AcademyScreen extends StatefulWidget { const AcademyScreen({super.key}); @@ -15,6 +16,7 @@ class AcademyScreen extends StatefulWidget { class _AcademyScreenState extends State { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Scaffold( backgroundColor: AppColor.plainWhite, appBar: AppBar( @@ -24,7 +26,7 @@ class _AcademyScreenState extends State { scrolledUnderElevation: 0, automaticallyImplyLeading: false, title: TextWidget().text22W700( - AppText.academyText, + localizations.translate(AppText.academyText), clr: AppColor.charcoalColor, ), titleSpacing: 16, diff --git a/lib/features/MainScreens/Academy/presentation/widgets/academy_detail_section.dart b/lib/features/MainScreens/Academy/presentation/widgets/academy_detail_section.dart index ac1376c..124b41d 100644 --- a/lib/features/MainScreens/Academy/presentation/widgets/academy_detail_section.dart +++ b/lib/features/MainScreens/Academy/presentation/widgets/academy_detail_section.dart @@ -6,11 +6,14 @@ 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'; + class AcademyDetailSection extends StatelessWidget { const AcademyDetailSection({super.key}); @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Container( decoration: BoxDecoration( color: AppColor.plainWhite, @@ -59,7 +62,7 @@ class AcademyDetailSection extends StatelessWidget { ), Gap(5.w), TextWidget().text12W700( - '3 ${AppText.videosTitle}', + '3 ${localizations.translate(AppText.videosTitle)}', clr: AppColor.academyCardTextColor, ), ], diff --git a/lib/features/MainScreens/Academy/presentation/widgets/academy_video_section.dart b/lib/features/MainScreens/Academy/presentation/widgets/academy_video_section.dart index b0f6842..9120aac 100644 --- a/lib/features/MainScreens/Academy/presentation/widgets/academy_video_section.dart +++ b/lib/features/MainScreens/Academy/presentation/widgets/academy_video_section.dart @@ -4,12 +4,14 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:tanami_app/core/styles/app_images.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; class AcademyVideoSection extends StatelessWidget { const AcademyVideoSection({super.key}); @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Container( decoration: BoxDecoration( color: Colors.white, @@ -29,7 +31,7 @@ class AcademyVideoSection extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppText.videosTitle, + localizations.translate(AppText.videosTitle), style: GoogleFonts.dmSans( color: Colors.black, fontSize: 15.sp, diff --git a/lib/features/MainScreens/Invest/presentation/pages/invest_details_screen.dart b/lib/features/MainScreens/Invest/presentation/pages/invest_details_screen.dart index c7d311c..a7f6f10 100644 --- a/lib/features/MainScreens/Invest/presentation/pages/invest_details_screen.dart +++ b/lib/features/MainScreens/Invest/presentation/pages/invest_details_screen.dart @@ -7,6 +7,7 @@ import 'package:tanami_app/core/styles/app_color.dart'; import 'package:tanami_app/core/styles/app_text.dart'; import 'package:tanami_app/shared/components/button_widget.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/appbar_widget.dart'; import '../../../Portfolio/presentation/bloc/carousel/carousel_bloc.dart'; import 'invest_details_layout.dart'; @@ -17,6 +18,7 @@ class InvestDetailsScreen extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Scaffold( backgroundColor: AppColor.plainWhite, bottomNavigationBar: type == "closed" @@ -26,7 +28,7 @@ class InvestDetailsScreen extends StatelessWidget { width: 1.sw, height: 65.h, child: ButtonWidget().elevatedBtn( - text: AppText.investText, + text: localizations.translate(AppText.investText), clr: AppColor.primaryColor2, function: () { goRouter.pushNamed(RouteName.investPaymentScreen); diff --git a/lib/features/MainScreens/Invest/presentation/pages/invest_layout.dart b/lib/features/MainScreens/Invest/presentation/pages/invest_layout.dart index 8f98067..5fc6320 100644 --- a/lib/features/MainScreens/Invest/presentation/pages/invest_layout.dart +++ b/lib/features/MainScreens/Invest/presentation/pages/invest_layout.dart @@ -7,6 +7,7 @@ import 'package:tanami_app/core/styles/app_color.dart'; import 'package:tanami_app/core/styles/app_text.dart'; import 'package:tanami_app/features/MainScreens/Invest/presentation/widgets/kyc_card.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../bloc/tab_bloc.dart'; import '../bloc/tab_event.dart'; import '../bloc/tab_state.dart'; @@ -19,6 +20,7 @@ class InvestLayout extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return DefaultTabController( length: 2, child: Scaffold( @@ -26,9 +28,9 @@ class InvestLayout extends StatelessWidget { body: Column( children: [ TabBar( - tabs: const [ - Tab(text: AppText.availableText), - Tab(text: AppText.closedText), + tabs: [ + Tab(text: localizations.translate(AppText.availableText)), + Tab(text: localizations.translate(AppText.closedText)), ], labelStyle: GoogleFonts.dmSans( fontWeight: FontWeight.bold, @@ -82,7 +84,7 @@ class AvailableItemsScreen extends StatelessWidget { horizontal: 16, vertical: 18, ), - child: kycCard()) + child: kycCard(context)) : GestureDetector( onTap: () { goRouter.pushNamed(RouteName.investDetailScreen, diff --git a/lib/features/MainScreens/Invest/presentation/pages/invest_screen.dart b/lib/features/MainScreens/Invest/presentation/pages/invest_screen.dart index 9787a33..2343791 100644 --- a/lib/features/MainScreens/Invest/presentation/pages/invest_screen.dart +++ b/lib/features/MainScreens/Invest/presentation/pages/invest_screen.dart @@ -5,6 +5,7 @@ import 'package:tanami_app/features/MainScreens/Portfolio/presentation/bloc/caro import '../../../../../core/styles/app_color.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; import 'invest_layout.dart'; @@ -18,6 +19,7 @@ class InvestScreen extends StatefulWidget { class _InvestScreenState extends State { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Scaffold( backgroundColor: AppColor.plainWhite, appBar: AppBar( @@ -27,7 +29,7 @@ class _InvestScreenState extends State { scrolledUnderElevation: 0, automaticallyImplyLeading: false, title: TextWidget().text22W700( - AppText.investText, + localizations.translate(AppText.investText), clr: AppColor.charcoalColor, ), titleSpacing: 16, diff --git a/lib/features/MainScreens/Invest/presentation/pages/payment/invest_payment_screen.dart b/lib/features/MainScreens/Invest/presentation/pages/payment/invest_payment_screen.dart index d0abe10..baa76b3 100644 --- a/lib/features/MainScreens/Invest/presentation/pages/payment/invest_payment_screen.dart +++ b/lib/features/MainScreens/Invest/presentation/pages/payment/invest_payment_screen.dart @@ -6,6 +6,7 @@ import 'package:tanami_app/features/MainScreens/Invest/presentation/bloc/payment import '../../../../../../core/styles/app_color.dart'; import '../../../../../../core/styles/app_text.dart'; +import '../../../../../../core/utils/language/localizations_delegate.dart'; import 'invest_payment_layout.dart'; class InvestPaymentScreen extends StatelessWidget { @@ -13,6 +14,7 @@ class InvestPaymentScreen extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Scaffold( backgroundColor: AppColor.plainWhite, appBar: AppBar( @@ -21,7 +23,7 @@ class InvestPaymentScreen extends StatelessWidget { scrolledUnderElevation: 0.0, centerTitle: true, title: Text( - AppText.investmentDetailsText, + localizations.translate(AppText.investmentDetailsText), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 20.sp, diff --git a/lib/features/MainScreens/Invest/presentation/widgets/invest_closed_details_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/invest_closed_details_section.dart index accf319..e64f119 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/invest_closed_details_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/invest_closed_details_section.dart @@ -5,6 +5,7 @@ import 'package:tanami_app/core/styles/app_color.dart'; import '../../../../../core/styles/app_images.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; class InvestClosedDetailsSection extends StatelessWidget { @@ -12,6 +13,7 @@ class InvestClosedDetailsSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Column( children: [ Container( @@ -71,7 +73,7 @@ class InvestClosedDetailsSection extends StatelessWidget { 5.w, ), TextWidget().text12W700( - "${AppText.closedDateText}: ", + "${localizations.translate(AppText.closedDateText)}: ", clr: AppColor.plainBlack, ), TextWidget().text12W500( @@ -127,7 +129,7 @@ class InvestClosedDetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - "${AppText.sponsorNameText}:", + "${localizations.translate(AppText.sponsorNameText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -149,7 +151,7 @@ class InvestClosedDetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - "${AppText.actualReturnToDate}:", + "${localizations.translate(AppText.actualReturnToDate)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -171,7 +173,7 @@ class InvestClosedDetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - "${AppText.holdingPeriodText}:", + "${localizations.translate(AppText.holdingPeriodText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -191,7 +193,7 @@ class InvestClosedDetailsSection extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - "${AppText.expectedExitDate}:", + "${localizations.translate(AppText.expectedExitDate)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), diff --git a/lib/features/MainScreens/Invest/presentation/widgets/invest_detail_details_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/invest_detail_details_section.dart index a9ceef8..6a3b8c8 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/invest_detail_details_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/invest_detail_details_section.dart @@ -4,6 +4,7 @@ import 'package:gap/gap.dart'; import 'package:tanami_app/core/styles/app_color.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; class InvestDetailDetailsSection extends StatelessWidget { @@ -12,6 +13,7 @@ class InvestDetailDetailsSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Column( children: [ Container( @@ -48,8 +50,8 @@ class InvestDetailDetailsSection extends StatelessWidget { ? const SizedBox() : TextWidget().text11W700( type == "closed" - ? "100% ${AppText.fundedText}" - : "60% ${AppText.fundedText}", + ? "100% ${localizations.translate(AppText.fundedText)}" + : "60% ${localizations.translate(AppText.fundedText)}", clr: AppColor.portoflioCardTextColor), type == "closed" ? const SizedBox() : const Gap(8.0), TextWidget().text14W400( @@ -81,7 +83,7 @@ class InvestDetailDetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - "${AppText.sponsorNameText}:", + "${localizations.translate(AppText.sponsorNameText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -103,7 +105,7 @@ class InvestDetailDetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - "${AppText.estimatedReturnText}:", + "${localizations.translate(AppText.estimatedReturnText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -129,8 +131,8 @@ class InvestDetailDetailsSection extends StatelessWidget { width: 150.w, child: TextWidget().text14W500( type == "closed" - ? "${AppText.actualReturnToDate}:" - : "${AppText.actualEstimatedReturnText}:", + ? "${localizations.translate(AppText.actualReturnToDate)}:" + : "${localizations.translate(AppText.actualEstimatedReturnText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -158,7 +160,7 @@ class InvestDetailDetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - "${AppText.holdingPeriodText}:", + "${localizations.translate(AppText.holdingPeriodText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -180,8 +182,8 @@ class InvestDetailDetailsSection extends StatelessWidget { children: [ TextWidget().text14W500( type == "closed" - ? "${AppText.expectedExitDate}:" - : "${AppText.payoutDateText}:", + ? "${localizations.translate(AppText.expectedExitDate)}:" + : "${localizations.translate(AppText.payoutDateText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -197,7 +199,7 @@ class InvestDetailDetailsSection extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - "${AppText.minimumInvestmentText}:", + "${localizations.translate(AppText.minimumInvestmentText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), diff --git a/lib/features/MainScreens/Invest/presentation/widgets/invest_detail_image_carousel.dart b/lib/features/MainScreens/Invest/presentation/widgets/invest_detail_image_carousel.dart index 28c4d3c..2b2873f 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/invest_detail_image_carousel.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/invest_detail_image_carousel.dart @@ -7,6 +7,7 @@ import 'package:tanami_app/core/styles/app_color.dart'; import '../../../../../core/styles/app_images.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; import '../../../Portfolio/presentation/bloc/carousel/carousel_bloc.dart'; import '../../../Portfolio/presentation/bloc/carousel/carousel_event.dart'; @@ -29,6 +30,7 @@ class InvestDetailCarouselView extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Container( height: 190.h, decoration: const BoxDecoration( @@ -138,8 +140,8 @@ class InvestDetailCarouselView extends StatelessWidget { ), TextWidget().text11W500( type == "closed" - ? '${AppText.closedDateText} Jul 10 2025' - : '${AppText.closingDateText} Jul 10 2025', + ? '${localizations.translate(AppText.closedDateText)} Jul 10 2025' + : '${localizations.translate(AppText.closingDateText)} Jul 10 2025', clr: AppColor.plainBlack, ), ], diff --git a/lib/features/MainScreens/Invest/presentation/widgets/invest_details_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/invest_details_section.dart index 3a6382e..9a7cf6a 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/invest_details_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/invest_details_section.dart @@ -5,6 +5,7 @@ import 'package:tanami_app/core/styles/app_color.dart'; import '../../../../../core/styles/app_images.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; class InvestDetailsSection extends StatelessWidget { @@ -12,6 +13,7 @@ class InvestDetailsSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Column( children: [ Container( @@ -71,7 +73,7 @@ class InvestDetailsSection extends StatelessWidget { 5.w, ), TextWidget().text12W700( - "${AppText.closingDateText}: ", + "${localizations.translate(AppText.closingDateText)}: ", clr: AppColor.plainBlack, ), TextWidget().text12W500( @@ -96,7 +98,8 @@ class InvestDetailsSection extends StatelessWidget { AppColor.investTextColor), ), const Gap(8.0), - TextWidget().text11W700("60% ${AppText.fundedText}", + TextWidget().text11W700( + "60% ${localizations.translate(AppText.fundedText)}", clr: AppColor.portoflioCardTextColor), const Gap(8.0), TextWidget().text14W400( @@ -127,7 +130,7 @@ class InvestDetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - "${AppText.sponsorNameText}:", + "${localizations.translate(AppText.sponsorNameText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -149,7 +152,7 @@ class InvestDetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - "${AppText.estimatedReturnText}:", + "${localizations.translate(AppText.estimatedReturnText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -171,7 +174,7 @@ class InvestDetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - "${AppText.holdingPeriodText}:", + "${localizations.translate(AppText.holdingPeriodText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -191,7 +194,7 @@ class InvestDetailsSection extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - "${AppText.minimumInvestmentText}:", + "${localizations.translate(AppText.minimumInvestmentText)}:", clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), diff --git a/lib/features/MainScreens/Invest/presentation/widgets/invest_included_documents_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/invest_included_documents_section.dart index 2866166..200280e 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/invest_included_documents_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/invest_included_documents_section.dart @@ -6,12 +6,14 @@ import 'package:tanami_app/core/styles/app_images.dart'; import 'package:tanami_app/shared/components/text_widget.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; class InvestIncludedDocumentsSection extends StatelessWidget { const InvestIncludedDocumentsSection({super.key}); @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Container( width: double.infinity, decoration: BoxDecoration( @@ -32,7 +34,7 @@ class InvestIncludedDocumentsSection extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text15W700( - AppText.includeddocs, + localizations.translate(AppText.includeddocs), clr: AppColor.plainBlack, ), Gap( diff --git a/lib/features/MainScreens/Invest/presentation/widgets/invest_video_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/invest_video_section.dart index e7726a4..9ac1364 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/invest_video_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/invest_video_section.dart @@ -4,12 +4,14 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:tanami_app/core/styles/app_images.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; class InvestVideoSection extends StatelessWidget { const InvestVideoSection({super.key}); @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Container( decoration: BoxDecoration( color: Colors.white, @@ -29,7 +31,7 @@ class InvestVideoSection extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppText.videosTitle, + localizations.translate(AppText.videosTitle), style: GoogleFonts.dmSans( color: Colors.black, fontSize: 15.sp, diff --git a/lib/features/MainScreens/Invest/presentation/widgets/key_investment_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/key_investment_section.dart index 0f79307..ba6e3cc 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/key_investment_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/key_investment_section.dart @@ -7,12 +7,14 @@ import 'package:tanami_app/core/styles/app_images.dart'; import 'package:tanami_app/shared/components/text_widget.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; class KeyInvestmentSection extends StatelessWidget { const KeyInvestmentSection({super.key}); @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Container( width: double.infinity, padding: const EdgeInsets.symmetric(horizontal: 5), @@ -34,7 +36,7 @@ class KeyInvestmentSection extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text15W700( - AppText.keyMeritsOfInvestmentText, + localizations.translate(AppText.keyMeritsOfInvestmentText), clr: AppColor.plainBlack, ), Gap( diff --git a/lib/features/MainScreens/Invest/presentation/widgets/kyc_card.dart b/lib/features/MainScreens/Invest/presentation/widgets/kyc_card.dart index c94c539..87edd6b 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/kyc_card.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/kyc_card.dart @@ -6,7 +6,10 @@ 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'; -Widget kycCard() { +import '../../../../../core/utils/language/localizations_delegate.dart'; + +Widget kycCard(BuildContext context) { + var localizations = AppLocalizations.of(context); return Container( clipBehavior: Clip.antiAlias, padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), @@ -42,11 +45,12 @@ Widget kycCard() { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W600( - AppText.completeYourVerification, + localizations.translate(AppText.completeYourVerification), clr: AppColor.languageTextColor, ), TextWidget().text11W500( - AppText.verifyYourAccountInUnderMinutesToStartInvestingToday, + localizations.translate(AppText + .verifyYourAccountInUnderMinutesToStartInvestingToday), clr: AppColor.languageTextColor, ), ], diff --git a/lib/features/MainScreens/Invest/presentation/widgets/payment/confirm_invest_bottom_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/payment/confirm_invest_bottom_section.dart index 56040ae..169f3ba 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/payment/confirm_invest_bottom_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/payment/confirm_invest_bottom_section.dart @@ -5,6 +5,7 @@ import '../../../../../../core/routes/route_name.dart'; import '../../../../../../core/routes/routes.dart'; import '../../../../../../core/styles/app_color.dart'; import '../../../../../../core/styles/app_text.dart'; +import '../../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../../shared/components/button_widget.dart'; class ConfirmInvestBottomSection extends StatelessWidget { @@ -14,6 +15,7 @@ class ConfirmInvestBottomSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Container( margin: const EdgeInsets.symmetric( horizontal: 16, @@ -27,7 +29,7 @@ class ConfirmInvestBottomSection extends StatelessWidget { goRouter.pushNamed(RouteName.otpScreen, pathParameters: {"fromScreen": "confirm-investment"}); }, - text: AppText.investText, + text: localizations.translate(AppText.investText), clr: AppColor.primaryColor2, ), ); diff --git a/lib/features/MainScreens/Invest/presentation/widgets/payment/confirm_invest_top_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/payment/confirm_invest_top_section.dart index b1774d2..64045c9 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/payment/confirm_invest_top_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/payment/confirm_invest_top_section.dart @@ -5,11 +5,14 @@ import 'package:tanami_app/core/styles/app_color.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'; + class ConfirmInvestTopSection extends StatelessWidget { const ConfirmInvestTopSection({super.key}); @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -67,32 +70,36 @@ class ConfirmInvestTopSection extends StatelessWidget { ), ), ), - child: const Column( + child: Column( children: [ Padding( - padding: EdgeInsets.all(12.0), + padding: const EdgeInsets.all(12.0), child: Column( children: [ InvestmentDetailRow( - label: AppText.investmentamount, + label: localizations + .translate(AppText.investmentamount), value: 'SAR 1,000', subTitle: "\$ 267,00", ), - SizedBox(height: 8.0), + const SizedBox(height: 8.0), InvestmentDetailRow( - label: AppText.paymentMethod, + label: + localizations.translate(AppText.paymentMethod), value: 'Wallet', subTitle: "", ), - SizedBox(height: 8.0), + const SizedBox(height: 8.0), InvestmentDetailRow( - label: AppText.currentExchangeText, + label: localizations + .translate(AppText.currentExchangeText), value: 'SAR 1 = USD 0.27', subTitle: "", ), - SizedBox(height: 8.0), + const SizedBox(height: 8.0), InvestmentDetailRow( - label: '${AppText.totalDebitedAmountText}:', + label: + '${localizations.translate(AppText.totalDebitedAmountText)}:', value: 'SAR 1,000', subTitle: "", ), diff --git a/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_bottom_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_bottom_section.dart index 7f08567..346ff99 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_bottom_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_bottom_section.dart @@ -10,6 +10,7 @@ import '../../../../../../core/routes/routes.dart'; import '../../../../../../core/styles/app_color.dart'; import '../../../../../../core/styles/app_images.dart'; import '../../../../../../core/styles/app_text.dart'; +import '../../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../../shared/components/button_widget.dart'; import '../../../../../countrySelection/presentation/bloc/choose_country_bloc.dart'; import '../../../../../countrySelection/presentation/bloc/choose_country_state.dart'; @@ -21,6 +22,7 @@ class InvestPayBottomSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Column( mainAxisSize: MainAxisSize.min, children: [ @@ -61,7 +63,8 @@ class InvestPayBottomSection extends StatelessWidget { ), const Gap(5), Text( - AppText.payWithAppleText, + localizations + .translate(AppText.payWithAppleText), style: GoogleFonts.dmSans( color: state.isFormValid ? AppColor.plainWhite @@ -93,7 +96,8 @@ class InvestPayBottomSection extends StatelessWidget { }); } }, - text: AppText.confirmInvestmentText, + text: localizations + .translate(AppText.confirmInvestmentText), clr: state.isFormValid ? AppColor.primaryColor2 : AppColor.inactiveBtnColor), diff --git a/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_method_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_method_section.dart index 942a93e..85bc65d 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_method_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_method_section.dart @@ -8,6 +8,7 @@ import 'package:tanami_app/core/styles/app_text.dart'; import 'package:tanami_app/shared/components/text_widget.dart'; import '../../../../../../core/styles/app_color.dart'; +import '../../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../countrySelection/presentation/bloc/choose_country_bloc.dart'; import '../../../../../countrySelection/presentation/bloc/choose_country_event.dart'; import '../../../../../countrySelection/presentation/bloc/choose_country_state.dart'; @@ -17,6 +18,7 @@ class InvestPayMethodSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); final radioBloc = context.read(); return Padding( padding: const EdgeInsets.fromLTRB(16.0, 0.0, 16.0, 0.0), @@ -30,7 +32,8 @@ class InvestPayMethodSection extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TextWidget().text15W700(AppText.choosePaymentMethodText, + TextWidget().text15W700( + localizations.translate(AppText.choosePaymentMethodText), clr: AppColor.plainBlack), const Gap(16), GestureDetector( @@ -88,7 +91,9 @@ class InvestPayMethodSection extends StatelessWidget { const Gap(5), SvgPicture.asset(AppImages.walletIcon), const Gap(5), - TextWidget().text14W700(AppText.walletText, + TextWidget().text14W700( + localizations + .translate(AppText.walletText), clr: AppColor.textLabelColor), ], ), @@ -98,7 +103,8 @@ class InvestPayMethodSection extends StatelessWidget { text: TextSpan( children: [ TextSpan( - text: '${AppText.balanceText}: ', + text: + '${localizations.translate(AppText.balanceText)}: ', style: GoogleFonts.dmSans( color: Colors.grey, fontSize: 12.0, @@ -196,7 +202,9 @@ class InvestPayMethodSection extends StatelessWidget { const Gap(5), SvgPicture.asset(AppImages.applePayIcon), const Gap(5), - TextWidget().text14W700(AppText.applePayText, + TextWidget().text14W700( + localizations + .translate(AppText.applePayText), clr: AppColor.textLabelColor), ], ), @@ -206,7 +214,8 @@ class InvestPayMethodSection extends StatelessWidget { Padding( padding: const EdgeInsets.all(12), child: TextWidget().text14W500( - AppText.instantTransferFundsApplePayText, + localizations.translate( + AppText.instantTransferFundsApplePayText), clr: AppColor.textLabelColor, txtAlign: TextAlign.start, ), diff --git a/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_top_section.dart b/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_top_section.dart index 6240a44..f2e9b1c 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_top_section.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_top_section.dart @@ -7,6 +7,7 @@ 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 '../../../../../../core/utils/text_formatter/comma_input_text_formatter.dart'; import '../../../../../../shared/components/text_from_field_widget.dart'; import '../../../../../countrySelection/presentation/bloc/choose_country_bloc.dart'; @@ -20,6 +21,7 @@ class InvestPayTopSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); final investPaymentBloc = context.read(); return Padding( @@ -27,7 +29,8 @@ class InvestPayTopSection extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TextWidget().text15W700(AppText.enterInvestmentAmountText, + TextWidget().text15W700( + localizations.translate(AppText.enterInvestmentAmountText), clr: AppColor.plainBlack), const Gap(16.0), Container( @@ -111,8 +114,9 @@ class InvestPayTopSection extends StatelessWidget { .amountController .text .isEmpty) { - return AppText - .pleaseEnterAmountText; + return localizations.translate( + AppText + .pleaseEnterAmountText); } return null; }, @@ -129,7 +133,8 @@ class InvestPayTopSection extends StatelessWidget { textEditingController: investPaymentBloc .amountController, - hintText: AppText.enterAmountText, + hintText: localizations.translate( + AppText.enterAmountText), suffixIcon: const SizedBox(), ), ], @@ -149,8 +154,8 @@ class InvestPayTopSection extends StatelessWidget { } return selectedIndex == 0 ? const SizedBox() - : const Padding( - padding: EdgeInsets.all(12.0), + : Padding( + padding: const EdgeInsets.all(12.0), child: Column( children: [ // InvestmentDetailRow( @@ -159,13 +164,14 @@ class InvestPayTopSection extends StatelessWidget { // ), // SizedBox(height: 8.0), InvestmentDetailRow( - label: AppText.processingFees, + label: localizations + .translate(AppText.processingFees), value: '3%', ), - SizedBox(height: 8.0), + const SizedBox(height: 8.0), InvestmentDetailRow( label: - '${AppText.totalInvestmentAmountText}:', + '${localizations.translate(AppText.totalInvestmentAmountText)}:', value: 'SAR 1000', ), ], @@ -197,14 +203,16 @@ class InvestPayTopSection extends StatelessWidget { SizedBox( width: 0.8.sw, child: TextWidget().text12W500( - AppText.retailInvestirCanInvestMaxText, + localizations.translate( + AppText.retailInvestirCanInvestMaxText), clr: AppColor.infoTextColor, ), ), SizedBox( width: 0.8.sw, child: TextWidget().text12W700( - AppText.upgradeYourInvestorStatusToIncreaseText, + localizations.translate( + AppText.upgradeYourInvestorStatusToIncreaseText), clr: AppColor.infoTextColor, txtDec: TextDecoration.underline, decClr: AppColor.infoTextColor, @@ -231,7 +239,8 @@ class InvestPayTopSection extends StatelessWidget { SizedBox( width: 0.8.sw, child: TextWidget().text12W500( - AppText.thisIsUsdInvestmentOpportunityText, + localizations + .translate(AppText.thisIsUsdInvestmentOpportunityText), clr: AppColor.languageTextColor, ), ), diff --git a/lib/features/MainScreens/Invest/presentation/widgets/payment/investment_oversubscribed_dialog.dart b/lib/features/MainScreens/Invest/presentation/widgets/payment/investment_oversubscribed_dialog.dart index b863dcc..b0aa73e 100644 --- a/lib/features/MainScreens/Invest/presentation/widgets/payment/investment_oversubscribed_dialog.dart +++ b/lib/features/MainScreens/Invest/presentation/widgets/payment/investment_oversubscribed_dialog.dart @@ -4,6 +4,7 @@ import 'package:tanami_app/core/routes/routes.dart'; import 'package:tanami_app/core/styles/app_color.dart'; import 'package:tanami_app/core/styles/app_text.dart'; +import '../../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../../shared/components/text_widget.dart'; class InvestmentOverSubscribedDialog extends StatelessWidget { @@ -11,6 +12,7 @@ class InvestmentOverSubscribedDialog extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return AlertDialog( backgroundColor: AppColor.plainWhite, shape: RoundedRectangleBorder( @@ -29,7 +31,7 @@ class InvestmentOverSubscribedDialog extends StatelessWidget { }, ), TextWidget().text17W700( - AppText.unableToProcessTransactionText, + localizations.translate(AppText.unableToProcessTransactionText), clr: AppColor.textLabelColor, ), ], @@ -38,7 +40,8 @@ class InvestmentOverSubscribedDialog extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ TextWidget().text15W500( - AppText.investmentOpportunityHasReachedMaxcapText, + localizations + .translate(AppText.investmentOpportunityHasReachedMaxcapText), clr: AppColor.hintTextColor, ), const Gap(20), @@ -48,7 +51,8 @@ class InvestmentOverSubscribedDialog extends StatelessWidget { goRouter.pop(); goRouter.pop(); }, - child: TextWidget().text14W500(AppText.backToInvestmentText, + child: TextWidget().text14W500( + localizations.translate(AppText.backToInvestmentText), textDecoration: TextDecoration.underline, clr: AppColor.otpTextColor), ), diff --git a/lib/features/MainScreens/Portfolio/presentation/pages/portfolio_layout.dart b/lib/features/MainScreens/Portfolio/presentation/pages/portfolio_layout.dart index 1d7bc7c..cb98345 100644 --- a/lib/features/MainScreens/Portfolio/presentation/pages/portfolio_layout.dart +++ b/lib/features/MainScreens/Portfolio/presentation/pages/portfolio_layout.dart @@ -9,12 +9,14 @@ import 'package:tanami_app/features/MainScreens/Portfolio/presentation/widgets/p import 'package:tanami_app/shared/components/text_widget.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; class PortfolioLayout extends StatelessWidget { const PortfolioLayout({super.key}); @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Scaffold( backgroundColor: AppColor.plainWhite, body: CustomScrollView( @@ -43,7 +45,7 @@ class PortfolioLayout extends StatelessWidget { child: Row( children: [ TextWidget().text12W700( - AppText.portfolio, + localizations.translate(AppText.portfolio), clr: const Color(0xFF888888), ), TextWidget().text14W700( @@ -70,7 +72,7 @@ class PortfolioLayout extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W700( - AppText.portfolioText, + localizations.translate(AppText.portfolioText), clr: const Color(0xFFC9D9CB), ), Gap(8.h), diff --git a/lib/features/MainScreens/Portfolio/presentation/widgets/details_section.dart b/lib/features/MainScreens/Portfolio/presentation/widgets/details_section.dart index b16c7bb..b1f4279 100644 --- a/lib/features/MainScreens/Portfolio/presentation/widgets/details_section.dart +++ b/lib/features/MainScreens/Portfolio/presentation/widgets/details_section.dart @@ -4,6 +4,7 @@ import 'package:gap/gap.dart'; import 'package:tanami_app/core/styles/app_color.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; class DetailsSection extends StatelessWidget { @@ -11,6 +12,7 @@ class DetailsSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Column( children: [ Container( @@ -56,7 +58,7 @@ class DetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - AppText.investmentamount, + localizations.translate(AppText.investmentamount), clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -87,7 +89,7 @@ class DetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - AppText.currentval, + localizations.translate(AppText.currentval), clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -118,7 +120,7 @@ class DetailsSection extends StatelessWidget { SizedBox( width: 150.w, child: TextWidget().text14W500( - AppText.disttodate, + localizations.translate(AppText.disttodate), clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), @@ -138,7 +140,7 @@ class DetailsSection extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - AppText.totalreturn, + localizations.translate(AppText.totalreturn), clr: AppColor.portoflioCardTextColor, txtAlign: TextAlign.start, ), diff --git a/lib/features/MainScreens/Portfolio/presentation/widgets/exited_card.dart b/lib/features/MainScreens/Portfolio/presentation/widgets/exited_card.dart index b9be69c..27b7737 100644 --- a/lib/features/MainScreens/Portfolio/presentation/widgets/exited_card.dart +++ b/lib/features/MainScreens/Portfolio/presentation/widgets/exited_card.dart @@ -8,6 +8,7 @@ import '../../../../../core/routes/routes.dart'; import '../../../../../core/styles/app_color.dart'; import '../../../../../core/styles/app_images.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; class ExitedCard extends StatelessWidget { @@ -19,6 +20,7 @@ class ExitedCard extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Padding( padding: const EdgeInsets.all(10.0), child: GestureDetector( @@ -112,7 +114,7 @@ class ExitedCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - AppText.investmentamount, + localizations.translate(AppText.investmentamount), clr: AppColor.portoflioCardTextColor, ), Column( @@ -138,7 +140,7 @@ class ExitedCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - AppText.currentval, + localizations.translate(AppText.currentval), clr: AppColor.portoflioCardTextColor, ), Column( @@ -164,7 +166,7 @@ class ExitedCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - AppText.totalreturn, + localizations.translate(AppText.totalreturn), clr: AppColor.portoflioCardTextColor, ), TextWidget().text14W700( diff --git a/lib/features/MainScreens/Portfolio/presentation/widgets/included_documents_section.dart b/lib/features/MainScreens/Portfolio/presentation/widgets/included_documents_section.dart index 5f5de8f..cc969f4 100644 --- a/lib/features/MainScreens/Portfolio/presentation/widgets/included_documents_section.dart +++ b/lib/features/MainScreens/Portfolio/presentation/widgets/included_documents_section.dart @@ -6,12 +6,14 @@ import 'package:tanami_app/core/styles/app_images.dart'; import 'package:tanami_app/shared/components/text_widget.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; class IncludedDocumentsSection extends StatelessWidget { const IncludedDocumentsSection({super.key}); @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Container( width: double.infinity, decoration: BoxDecoration( @@ -32,7 +34,7 @@ class IncludedDocumentsSection extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text15W700( - AppText.includeddocs, + localizations.translate(AppText.includeddocs), clr: AppColor.plainBlack, ), Gap( diff --git a/lib/features/MainScreens/Portfolio/presentation/widgets/pending_card.dart b/lib/features/MainScreens/Portfolio/presentation/widgets/pending_card.dart index 6ec0ddd..d61f942 100644 --- a/lib/features/MainScreens/Portfolio/presentation/widgets/pending_card.dart +++ b/lib/features/MainScreens/Portfolio/presentation/widgets/pending_card.dart @@ -8,6 +8,7 @@ import '../../../../../core/routes/routes.dart'; import '../../../../../core/styles/app_color.dart'; import '../../../../../core/styles/app_images.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; class PendingCard extends StatelessWidget { @@ -19,6 +20,7 @@ class PendingCard extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Padding( padding: const EdgeInsets.all(10.0), child: GestureDetector( @@ -112,7 +114,7 @@ class PendingCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - AppText.investmentamount, + localizations.translate(AppText.investmentamount), clr: AppColor.portoflioCardTextColor, ), Column( @@ -138,7 +140,7 @@ class PendingCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - AppText.currentval, + localizations.translate(AppText.currentval), clr: AppColor.portoflioCardTextColor, ), Column( @@ -164,7 +166,7 @@ class PendingCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget().text14W500( - AppText.totalreturn, + localizations.translate(AppText.totalreturn), clr: const Color(0xFF535353), ), TextWidget().text14W700( diff --git a/lib/features/MainScreens/Settings/presentation/pages/settings_screen.dart b/lib/features/MainScreens/Settings/presentation/pages/settings_screen.dart index fbec0cd..6ffc85e 100644 --- a/lib/features/MainScreens/Settings/presentation/pages/settings_screen.dart +++ b/lib/features/MainScreens/Settings/presentation/pages/settings_screen.dart @@ -3,6 +3,7 @@ import 'package:tanami_app/features/MainScreens/Settings/presentation/pages/sett import '../../../../../core/styles/app_color.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; class SettingsScreen extends StatefulWidget { @@ -15,6 +16,7 @@ class SettingsScreen extends StatefulWidget { class _SettingsScreenState extends State { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Scaffold( backgroundColor: AppColor.plainWhite, appBar: AppBar( @@ -24,7 +26,7 @@ class _SettingsScreenState extends State { automaticallyImplyLeading: false, centerTitle: true, title: TextWidget().text22W700( - AppText.settingsText, + localizations.translate(AppText.settingsText), clr: AppColor.charcoalColor, ), titleSpacing: 16, diff --git a/lib/features/MainScreens/Wallet/presentation/pages/deposit/deposit_layout.dart b/lib/features/MainScreens/Wallet/presentation/pages/deposit/deposit_layout.dart index 370a71e..9824250 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/deposit/deposit_layout.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/deposit/deposit_layout.dart @@ -12,6 +12,7 @@ import '../../../../../../core/routes/routes.dart'; import '../../../../../../core/styles/app_color.dart'; import '../../../../../../core/styles/app_images.dart'; import '../../../../../../core/styles/app_text.dart'; +import '../../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../../core/utils/text_formatter/comma_input_text_formatter.dart'; import '../../../../../countrySelection/presentation/bloc/choose_country_bloc.dart'; import '../../../../../countrySelection/presentation/bloc/choose_country_state.dart'; @@ -25,6 +26,7 @@ class DepositLayout extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); final depositPaymentBloc = context.read(); return Scaffold( @@ -66,7 +68,8 @@ class DepositLayout extends StatelessWidget { ), const Gap(5), Text( - AppText.payWithAppleText, + localizations + .translate(AppText.payWithAppleText), style: GoogleFonts.dmSans( color: state.isFormValid ? AppColor.plainWhite @@ -90,7 +93,7 @@ class DepositLayout extends StatelessWidget { : AppColor.inactiveBtnColor), child: Center( child: Text( - AppText.depositNoti, + localizations.translate(AppText.depositNoti), style: GoogleFonts.dmSans( color: state.isFormValid ? AppColor.plainWhite @@ -118,7 +121,7 @@ class DepositLayout extends StatelessWidget { text: TextSpan( children: [ TextSpan( - text: '${AppText.balance}: ', + text: '${localizations.translate(AppText.balance)}: ', style: GoogleFonts.dmSans( color: Colors.grey, fontSize: 12.sp, @@ -178,7 +181,7 @@ class DepositLayout extends StatelessWidget { width: 12.w, ), Text( - AppText.depositTitle, + localizations.translate(AppText.depositTitle), style: GoogleFonts.dmSans( color: Colors.black, fontSize: 17.sp, @@ -221,7 +224,8 @@ class DepositLayout extends StatelessWidget { validator: (value) { if (depositPaymentBloc .amountController.text.isEmpty) { - return AppText.pleaseEnterAmountText; + return localizations.translate( + AppText.pleaseEnterAmountText); } return null; }, @@ -312,7 +316,8 @@ class DepositLayout extends StatelessWidget { MainAxisAlignment.spaceBetween, children: [ Text( - AppText.processingFees, + localizations + .translate(AppText.processingFees), style: GoogleFonts.dmSans( color: const Color(0xFF535353), fontSize: 14.sp, @@ -334,7 +339,8 @@ class DepositLayout extends StatelessWidget { MainAxisAlignment.spaceBetween, children: [ Text( - AppText.depositAmt, + localizations + .translate(AppText.depositAmt), style: GoogleFonts.dmSans( color: const Color(0xFF535353), fontSize: 14.sp, diff --git a/lib/features/MainScreens/Wallet/presentation/pages/deposit/deposit_screen.dart b/lib/features/MainScreens/Wallet/presentation/pages/deposit/deposit_screen.dart index 3caafdb..da29299 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/deposit/deposit_screen.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/deposit/deposit_screen.dart @@ -6,6 +6,8 @@ import 'package:tanami_app/core/styles/app_text.dart'; import 'package:tanami_app/features/MainScreens/Wallet/presentation/bloc/deposit/deposit_payment_bloc.dart'; import 'package:tanami_app/features/MainScreens/Wallet/presentation/pages/deposit/deposit_layout.dart'; +import '../../../../../../core/utils/language/localizations_delegate.dart'; + class DepositScreen extends StatefulWidget { const DepositScreen({super.key}); @@ -17,6 +19,7 @@ class _DepositScreenState extends State { int selectedIndex = 0; @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Scaffold( backgroundColor: Colors.white, appBar: AppBar( @@ -25,7 +28,7 @@ class _DepositScreenState extends State { scrolledUnderElevation: 0.0, centerTitle: true, title: Text( - AppText.depositScreenTitle, + localizations.translate(AppText.depositScreenTitle), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 20.sp, diff --git a/lib/features/MainScreens/Wallet/presentation/pages/deposit/preview.dart b/lib/features/MainScreens/Wallet/presentation/pages/deposit/preview.dart index 82b2e28..c783b34 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/deposit/preview.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/deposit/preview.dart @@ -6,6 +6,8 @@ import 'package:tanami_app/core/routes/routes.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'; + class DepositPreview extends StatefulWidget { const DepositPreview({super.key}); @@ -14,15 +16,6 @@ class DepositPreview extends StatefulWidget { } class _DepositPreviewState extends State { - List titles = [ - AppText.accountHolderName, - AppText.iban, - AppText.beneficiaryAddress, - AppText.bankName, - AppText.branchAddress, - AppText.SWIFTcode, - AppText.refid, - ]; List values = [ 'Name Surname', 'DE 1234 5678 9012 3456', @@ -47,6 +40,16 @@ class _DepositPreviewState extends State { ]; @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); + List titles = [ + localizations.translate(AppText.accountHolderName), + localizations.translate(AppText.iban), + localizations.translate(AppText.beneficiaryAddress), + localizations.translate(AppText.bankName), + localizations.translate(AppText.branchAddress), + localizations.translate(AppText.SWIFTcode), + localizations.translate(AppText.refid), + ]; return Scaffold( backgroundColor: Colors.white, appBar: AppBar( @@ -55,7 +58,7 @@ class _DepositPreviewState extends State { scrolledUnderElevation: 0.0, centerTitle: true, title: Text( - AppText.depositScreenTitle, + localizations.translate(AppText.depositScreenTitle), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 20.sp, @@ -69,220 +72,221 @@ class _DepositPreviewState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - RichText( - text: TextSpan( - children: [ - TextSpan( - text: '${AppText.balance}: ', - style: GoogleFonts.dmSans( - color: Colors.grey, - fontSize: 12.sp, - fontWeight: FontWeight.bold, - ), - ), - TextSpan( - text: 'SAR 178,000 ', - style: GoogleFonts.dmSans( - color: Colors.black, - fontSize: 14.sp, - fontWeight: FontWeight.bold, - ), - ), - ], - ), - ), - SizedBox( - height: 20.h, - ), - Container( - width: double.infinity, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(22.r), - color: Colors.white, - boxShadow: [ - BoxShadow( - color: Colors.black.withOpacity(0.15), - spreadRadius: 2, - blurRadius: 10, - offset: const Offset(0, 5), - ), - ], - ), - child: Column( - children: [ - Padding( - padding: const EdgeInsets.all(12.0), - child: Row( - children: [ - Container( - decoration: const BoxDecoration( - shape: BoxShape.circle, - color: Color(0xFF0FA4A4)), - child: Padding( - padding: const EdgeInsets.all(12.0), - child: Image.asset( - 'assets/images/wallet_screen/deposit_list.png', - height: 36.h, - ), - ), - ), - SizedBox( - width: 12.w, - ), - Text( - AppText.depositTitle, - style: GoogleFonts.dmSans( - color: Colors.black, - fontSize: 17.sp, - fontWeight: FontWeight.w700, - ), - ), - ], - ), - ), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular(22.r), - bottomRight: Radius.circular(22.r), - ), - color: const Color(0xFFD8D8D8).withOpacity(0.4), - ), - child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 16.0, horizontal: 12.0), - child: ListView.builder( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemCount: titles2.length, - itemBuilder: (context, index) { - return Padding( - padding: - const EdgeInsets.symmetric(vertical: 5.0), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Text( - titles2[index], - style: GoogleFonts.dmSans( - color: const Color(0xFF535353), - fontSize: 14.sp, - fontWeight: FontWeight.w500, - ), - ), - (index == 0) - ? Column( - crossAxisAlignment: - CrossAxisAlignment.end, - children: [ - Text( - 'SAR 55,000', - style: GoogleFonts.dmSans( - color: Colors.black, - fontSize: 14.sp, - fontWeight: FontWeight.w700, - ), - ), - Text( - '\$ 14,685', - style: GoogleFonts.dmSans( - color: Colors.black, - fontSize: 11.sp, - fontWeight: FontWeight.w400, - ), - ), - ], - ) - : Text( - values2[index], - style: GoogleFonts.dmSans( - color: Colors.black, - fontSize: 14.sp, - fontWeight: FontWeight.w700, - ), - ), - ], - ), - ); - }, - ), - ), - ), - ], - ), - ), - SizedBox( - height: 20.h, - ), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(22.r), - color: const Color(0xFFEEF6FB), - border: Border.all(color: const Color(0xFF90D4FF)), - boxShadow: const [ - BoxShadow( - color: Color(0xFFB0D3EF), - spreadRadius: 1, - blurRadius: 10, - offset: Offset(0, 3), - ), - ], - ), - child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 12.0, horizontal: 16.0), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.asset( - 'assets/images/wallet_screen/info.png', - height: 25.h, - ), - SizedBox( - width: 10.w, - ), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - AppText.depositScreenTitle, - style: GoogleFonts.dmSans( - color: const Color(0xFF015698), - fontSize: 14.sp, - fontWeight: FontWeight.w700, - ), - ), - const Gap(4), - SizedBox( - width: 280.w, - child: Text( - AppText.info3, - style: GoogleFonts.dmSans( - color: const Color(0xFF015698), - fontSize: 12.sp, - fontWeight: FontWeight.w500, - ), - ), - ), - ], - ), - ), - ], - ), - ), - ), - SizedBox( - height: 20.h, - ), + // RichText( + // text: TextSpan( + // children: [ + // TextSpan( + // text: '${localizations.translate(AppText.balance)}: ', + // style: GoogleFonts.dmSans( + // color: Colors.grey, + // fontSize: 12.sp, + // fontWeight: FontWeight.bold, + // ), + // ), + // TextSpan( + // text: 'SAR 178,000 ', + // style: GoogleFonts.dmSans( + // color: Colors.black, + // fontSize: 14.sp, + // fontWeight: FontWeight.bold, + // ), + // ), + // ], + // ), + // ), + // SizedBox( + // height: 20.h, + // ), + // Container( + // width: double.infinity, + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(22.r), + // color: Colors.white, + // boxShadow: [ + // BoxShadow( + // color: Colors.black.withOpacity(0.15), + // spreadRadius: 2, + // blurRadius: 10, + // offset: const Offset(0, 5), + // ), + // ], + // ), + // child: Column( + // children: [ + // Padding( + // padding: const EdgeInsets.all(12.0), + // child: Row( + // children: [ + // Container( + // decoration: const BoxDecoration( + // shape: BoxShape.circle, + // color: Color(0xFF0FA4A4)), + // child: Padding( + // padding: const EdgeInsets.all(12.0), + // child: Image.asset( + // 'assets/images/wallet_screen/deposit_list.png', + // height: 36.h, + // ), + // ), + // ), + // SizedBox( + // width: 12.w, + // ), + // Text( + // localizations.translate (AppText.depositTitle), + // style: GoogleFonts.dmSans( + // color: Colors.black, + // fontSize: 17.sp, + // fontWeight: FontWeight.w700, + // ), + // ), + // ], + // ), + // ), + // Container( + // decoration: BoxDecoration( + // borderRadius: BorderRadius.only( + // bottomLeft: Radius.circular(22.r), + // bottomRight: Radius.circular(22.r), + // ), + // color: const Color(0xFFD8D8D8).withOpacity(0.4), + // ), + // child: Padding( + // padding: const EdgeInsets.symmetric( + // vertical: 16.0, horizontal: 12.0), + // child: ListView.builder( + // physics: const NeverScrollableScrollPhysics(), + // shrinkWrap: true, + // itemCount: titles2.length, + // itemBuilder: (context, index) { + // return Padding( + // padding: + // const EdgeInsets.symmetric(vertical: 5.0), + // child: Row( + // crossAxisAlignment: CrossAxisAlignment.center, + // mainAxisAlignment: + // MainAxisAlignment.spaceBetween, + // children: [ + // Text( + // titles2[index], + // style: GoogleFonts.dmSans( + // color: const Color(0xFF535353), + // fontSize: 14.sp, + // fontWeight: FontWeight.w500, + // ), + // ), + // (index == 0) + // ? Column( + // crossAxisAlignment: + // CrossAxisAlignment.end, + // children: [ + // Text( + // 'SAR 55,000', + // style: GoogleFonts.dmSans( + // color: Colors.black, + // fontSize: 14.sp, + // fontWeight: FontWeight.w700, + // ), + // ), + // Text( + // '\$ 14,685', + // style: GoogleFonts.dmSans( + // color: Colors.black, + // fontSize: 11.sp, + // fontWeight: FontWeight.w400, + // ), + // ), + // ], + // ) + // : Text( + // values2[index], + // style: GoogleFonts.dmSans( + // color: Colors.black, + // fontSize: 14.sp, + // fontWeight: FontWeight.w700, + // ), + // ), + // ], + // ), + // ); + // }, + // ), + // ), + // ), + // ], + // ), + // ), + + // SizedBox( + // height: 20.h, + // ), + // Container( + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(22.r), + // color: const Color(0xFFEEF6FB), + // border: Border.all(color: const Color(0xFF90D4FF)), + // boxShadow: const [ + // BoxShadow( + // color: Color(0xFFB0D3EF), + // spreadRadius: 1, + // blurRadius: 10, + // offset: Offset(0, 3), + // ), + // ], + // ), + // child: Padding( + // padding: const EdgeInsets.symmetric( + // vertical: 12.0, horizontal: 16.0), + // child: Row( + // crossAxisAlignment: CrossAxisAlignment.center, + // children: [ + // Image.asset( + // 'assets/images/wallet_screen/info.png', + // height: 25.h, + // ), + // SizedBox( + // width: 10.w, + // ), + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Text( + // AppText.depositScreenTitle, + // style: GoogleFonts.dmSans( + // color: const Color(0xFF015698), + // fontSize: 14.sp, + // fontWeight: FontWeight.w700, + // ), + // ), + // const Gap(4), + // SizedBox( + // width: 280.w, + // child: Text( + // AppText.info3, + // style: GoogleFonts.dmSans( + // color: const Color(0xFF015698), + // fontSize: 12.sp, + // fontWeight: FontWeight.w500, + // ), + // ), + // ), + // ], + // ), + // ), + // ], + // ), + // ), + // ), + // SizedBox( + // height: 20.h, + // ), Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppText.depositDetails, + localizations.translate(AppText.depositDetails), style: GoogleFonts.dmSans( color: Colors.black, fontSize: 15.sp, @@ -387,7 +391,7 @@ class _DepositPreviewState extends State { padding: const EdgeInsets.symmetric(vertical: 20.0), child: Center( child: Text( - AppText.submitDeposit, + localizations.translate(AppText.submitDeposit), style: GoogleFonts.dmSans( color: Colors.white, fontSize: 14.sp, @@ -405,7 +409,7 @@ class _DepositPreviewState extends State { }, child: Center( child: TextWidget().text14W700( - AppText.back, + localizations.translate(AppText.back), clr: const Color(0xFF363636), textDecoration: TextDecoration.underline, ), diff --git a/lib/features/MainScreens/Wallet/presentation/pages/filter_screen.dart b/lib/features/MainScreens/Wallet/presentation/pages/filter_screen.dart index 4282c98..eef33c4 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/filter_screen.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/filter_screen.dart @@ -6,6 +6,8 @@ import 'package:tanami_app/core/styles/app_color.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'; + class FilterScreen extends StatefulWidget { const FilterScreen({super.key}); @@ -14,13 +16,6 @@ class FilterScreen extends StatefulWidget { } class _FilterScreenState extends State { - List actions = [ - AppText.deposit, - AppText.withdrawal, - AppText.yield, - AppText.refund, - AppText.investment, - ]; List selected = [ false, false, @@ -32,6 +27,14 @@ class _FilterScreenState extends State { int statusIndex = 0; @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); + List actions = [ + localizations.translate(AppText.deposit), + localizations.translate(AppText.withdrawal), + localizations.translate(AppText.yield), + localizations.translate(AppText.refund), + localizations.translate(AppText.investment), + ]; return Scaffold( backgroundColor: Colors.white, appBar: AppBar( @@ -40,7 +43,7 @@ class _FilterScreenState extends State { scrolledUnderElevation: 0.0, centerTitle: true, title: Text( - AppText.filterTitle, + localizations.translate(AppText.filterTitle), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 20.sp, @@ -54,7 +57,7 @@ class _FilterScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppText.byDate, + localizations.translate(AppText.byDate), style: GoogleFonts.dmSans( color: const Color(0xFF8D8D8D), fontSize: 12.sp, @@ -76,7 +79,7 @@ class _FilterScreenState extends State { ), const Gap(3), Text( - AppText.date1, + localizations.translate(AppText.date1), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 14.sp, @@ -100,7 +103,7 @@ class _FilterScreenState extends State { ), const Gap(3), Text( - AppText.date2, + localizations.translate(AppText.date2), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 14.sp, @@ -111,7 +114,7 @@ class _FilterScreenState extends State { ), const Gap(10), Text( - AppText.byAction, + localizations.translate(AppText.byAction), style: GoogleFonts.dmSans( color: const Color(0xFF8D8D8D), fontSize: 12.sp, @@ -166,7 +169,7 @@ class _FilterScreenState extends State { ), const Gap(10), Text( - AppText.byStatus, + localizations.translate(AppText.byStatus), style: GoogleFonts.dmSans( color: const Color(0xFF8D8D8D), fontSize: 12.sp, @@ -188,7 +191,7 @@ class _FilterScreenState extends State { ), const Gap(3), Text( - AppText.all, + localizations.translate(AppText.all), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 14.sp, @@ -212,7 +215,7 @@ class _FilterScreenState extends State { ), const Gap(3), Text( - AppText.onHold, + localizations.translate(AppText.onHold), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 14.sp, @@ -233,7 +236,7 @@ class _FilterScreenState extends State { }); }, child: TextWidget().text14W700( - AppText.clear, + localizations.translate(AppText.clear), clr: const Color(0xFF363636), textDecoration: TextDecoration.underline, ), @@ -257,7 +260,7 @@ class _FilterScreenState extends State { padding: const EdgeInsets.symmetric(vertical: 20.0), child: Center( child: Text( - AppText.Submit, + localizations.translate(AppText.Submit), style: GoogleFonts.dmSans( color: Colors.white, fontSize: 14.sp, diff --git a/lib/features/MainScreens/Wallet/presentation/pages/kyc.dart b/lib/features/MainScreens/Wallet/presentation/pages/kyc.dart index 6fbd591..b87fbe2 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/kyc.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/kyc.dart @@ -6,6 +6,8 @@ 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'; + class KYCScreen extends StatefulWidget { const KYCScreen({super.key}); @@ -22,6 +24,7 @@ class _KYCScreenState extends State { ]; @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Scaffold( backgroundColor: Colors.white, appBar: AppBar( @@ -47,7 +50,7 @@ class _KYCScreenState extends State { height: 24.h, ), Text( - AppText.almostHere, + localizations.translate(AppText.almostHere), style: GoogleFonts.dmSans( color: const Color(0xFF363636), fontSize: 17.sp, @@ -60,7 +63,7 @@ class _KYCScreenState extends State { SizedBox( width: 280.w, child: Text( - AppText.completeAcc, + localizations.translate(AppText.completeAcc), textAlign: TextAlign.center, style: GoogleFonts.dmSans( color: const Color(0xFF8D8D8D), @@ -128,8 +131,7 @@ class _KYCScreenState extends State { height: 70.h, ), GestureDetector( - onTap: () { - }, + onTap: () {}, child: Container( margin: const EdgeInsets.all(12.0), height: 56.h, @@ -142,7 +144,7 @@ class _KYCScreenState extends State { padding: const EdgeInsets.symmetric(vertical: 20.0), child: Center( child: Text( - AppText.cont, + localizations.translate(AppText.cont), style: GoogleFonts.dmSans( color: Colors.white, fontSize: 14.sp, @@ -157,7 +159,7 @@ class _KYCScreenState extends State { height: 10.h, ), TextWidget().text14W700( - AppText.later, + localizations.translate(AppText.later), clr: const Color(0xFF363636), textDecoration: TextDecoration.underline, ) diff --git a/lib/features/MainScreens/Wallet/presentation/pages/walletDetails.dart b/lib/features/MainScreens/Wallet/presentation/pages/walletDetails.dart index ee242fb..ce32b17 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/walletDetails.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/walletDetails.dart @@ -8,20 +8,12 @@ import 'package:tanami_app/core/styles/app_text.dart'; import 'package:tanami_app/shared/components/button_widget.dart'; import 'package:ticket_widget/ticket_widget.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; + class WalletDetails extends StatelessWidget { final String type; WalletDetails({super.key, required this.type}); - final List titles = [ - AppText.status, - AppText.paymentMethod, - AppText.accountName, - AppText.iban, - AppText.beneficiaryAddress, - AppText.bankName, - AppText.branchAddress, - AppText.SWIFTcode, - AppText.refid, - ]; + final List values = [ 'On hold', 'Google/Apple Pay', @@ -36,6 +28,7 @@ class WalletDetails extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return (type == 'confirm-investment') ? WillPopScope( onWillPop: () async => false, @@ -54,10 +47,10 @@ class WalletDetails extends StatelessWidget { goRouter.pop(); goRouter.pop(); goRouter.pop(); - // goRouter.pop(); + goRouter.pop(); // goRouter.pop(); }, - text: AppText.closeText, + text: localizations.translate(AppText.closeText), clr: AppColor.primaryColor2, ), ), @@ -71,7 +64,7 @@ class WalletDetails extends StatelessWidget { goRouter.pop(); goRouter.pop(); goRouter.pop(); - // goRouter.pop(); + goRouter.pop(); // goRouter.pop(); }, icon: const Icon( @@ -83,7 +76,7 @@ class WalletDetails extends StatelessWidget { scrolledUnderElevation: 0.0, centerTitle: true, title: Text( - AppText.investmentConfirmationText, + localizations.translate(AppText.investmentConfirmationText), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 20.sp, @@ -125,7 +118,7 @@ class WalletDetails extends StatelessWidget { height: 16.h, ), Text( - AppText.investment, + localizations.translate(AppText.investment), style: GoogleFonts.dmSans( color: const Color(0xFF191B1E), fontSize: 14.sp, @@ -178,7 +171,7 @@ class WalletDetails extends StatelessWidget { SizedBox( height: 33.h, ), - _buildBody(), + _buildBody(localizations), ], ), ), @@ -195,7 +188,7 @@ class WalletDetails extends StatelessWidget { scrolledUnderElevation: 0.0, centerTitle: true, title: Text( - AppText.walletDetailsTitle, + localizations.translate(AppText.walletDetailsTitle), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 20.sp, @@ -208,7 +201,10 @@ class WalletDetails extends StatelessWidget { child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(22.r), - color: (type == 'Yield' || type == 'Refund') + color: (type == 'Yield' || + type == 'Refund' || + type == 'عائد' || + type == 'استرداد') ? Colors.white : Colors.transparent, boxShadow: [ @@ -220,7 +216,10 @@ class WalletDetails extends StatelessWidget { ), ], ), - child: (type == 'Yield' || type == 'Refund') + child: (type == 'Yield' || + type == 'Refund' || + type == 'عائد' || + type == 'استرداد') ? Padding( padding: const EdgeInsets.fromLTRB(20.0, 30, 20, 10), child: Column( @@ -289,7 +288,7 @@ class WalletDetails extends StatelessWidget { SizedBox( height: 35.h, ), - _buildBody(), + _buildBody(localizations), ], ), ) @@ -382,7 +381,7 @@ class WalletDetails extends StatelessWidget { SizedBox( height: 33.h, ), - _buildBody(), + _buildBody(localizations), ], ), ), @@ -454,12 +453,25 @@ class WalletDetails extends StatelessWidget { } } - Widget _buildBody() { - if (type == 'Yield') { + Widget _buildBody(AppLocalizations localizations) { + final List titles = [ + localizations.translate(AppText.status), + localizations.translate(AppText.paymentMethod), + localizations.translate(AppText.accountName), + localizations.translate(AppText.iban), + localizations.translate(AppText.beneficiaryAddress), + localizations.translate(AppText.bankName), + localizations.translate(AppText.branchAddress), + localizations.translate(AppText.SWIFTcode), + localizations.translate(AppText.refid), + ]; + if (type == 'Yield' || type == "عائد") { return Container(); - } else if (type == 'Refund') { + } else if (type == 'Refund' || type == 'استرداد') { return Container(); - } else if (type == 'Investment' || type == "confirm-investment") { + } else if (type == 'Investment' || + type == "confirm-investment" || + type == "استثمار") { return Container( width: double.infinity, decoration: const BoxDecoration( @@ -476,7 +488,7 @@ class WalletDetails extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppText.paymentMethodText, + localizations.translate(AppText.paymentMethodText), style: GoogleFonts.dmSans( color: const Color(0xFF535353), fontSize: 14.sp, diff --git a/lib/features/MainScreens/Wallet/presentation/pages/wallet_layout.dart b/lib/features/MainScreens/Wallet/presentation/pages/wallet_layout.dart index 6726bef..d451133 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/wallet_layout.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/wallet_layout.dart @@ -6,55 +6,56 @@ import 'package:tanami_app/core/styles/app_color.dart'; import '../../../../../core/routes/route_name.dart'; import '../../../../../core/routes/routes.dart'; import '../../../../../core/styles/app_text.dart'; - -List data = [ - { - 'title': AppText.deposit, - 'subTitle': '', - 'dateTime': '10/04/2024 22:04', - 'value': '+ SAR 100,000', - 'subValue': '', - 'onHold': false, - }, - { - 'title': AppText.withdrawal, - 'subTitle': '', - 'dateTime': '10/04/2024 22:04', - 'value': '- SAR 100,000', - 'subValue': '', - 'onHold': true, - }, - { - 'title': AppText.investment, - 'subTitle': 'Name of Investment', - 'dateTime': '10/04/2024 22:04', - 'value': '- SAR 100,000', - 'subValue': '', - 'onHold': false, - }, - { - 'title': AppText.yield, - 'subTitle': 'Name of Investment', - 'dateTime': '10/04/2024 22:04', - 'value': '+ SAR 100,000', - 'subValue': '+ \$100,00', - 'onHold': false, - }, - { - 'title': AppText.refund, - 'subTitle': '', - 'dateTime': '10/04/2024 22:04', - 'value': '- SAR 100,000', - 'subValue': '', - 'onHold': true, - }, -]; +import '../../../../../core/utils/language/localizations_delegate.dart'; class WalletLayout extends StatelessWidget { const WalletLayout({super.key}); @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); + List data = [ + { + 'title': localizations.translate(AppText.deposit), + 'subTitle': '', + 'dateTime': '10/04/2024 22:04', + 'value': '+ SAR 100,000', + 'subValue': '', + 'onHold': false, + }, + { + 'title': localizations.translate(AppText.withdrawal), + 'subTitle': '', + 'dateTime': '10/04/2024 22:04', + 'value': '- SAR 100,000', + 'subValue': '', + 'onHold': true, + }, + { + 'title': localizations.translate(AppText.investment), + 'subTitle': 'Name of Investment', + 'dateTime': '10/04/2024 22:04', + 'value': '- SAR 100,000', + 'subValue': '', + 'onHold': false, + }, + { + 'title': localizations.translate(AppText.yield), + 'subTitle': 'Name of Investment', + 'dateTime': '10/04/2024 22:04', + 'value': '+ SAR 100,000', + 'subValue': '+ \$100,00', + 'onHold': false, + }, + { + 'title': localizations.translate(AppText.refund), + 'subTitle': '', + 'dateTime': '10/04/2024 22:04', + 'value': '- SAR 100,000', + 'subValue': '', + 'onHold': true, + }, + ]; return Scaffold( backgroundColor: AppColor.plainWhite, body: Padding( @@ -66,7 +67,7 @@ class WalletLayout extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppText.day, + localizations.translate(AppText.day), style: GoogleFonts.dmSans( color: const Color(0xFF8D8D8D), fontSize: 11.sp, @@ -193,7 +194,8 @@ class WalletLayout extends StatelessWidget { CrossAxisAlignment.start, children: [ Text( - AppText.onHold, + localizations + .translate(AppText.onHold), style: GoogleFonts.dmSans( color: const Color(0xFF0172CB), fontSize: 14.sp, @@ -242,7 +244,7 @@ class WalletLayout extends StatelessWidget { } Widget getIcon(String title) { - if (title == 'Deposit') { + if (title == 'Deposit' || title == 'إيداع') { return Container( decoration: const BoxDecoration(shape: BoxShape.circle, color: Color(0xFF0FA4A4)), @@ -254,7 +256,7 @@ Widget getIcon(String title) { ), ), ); - } else if (title == 'Withdrawal') { + } else if (title == 'Withdrawal' || title == 'انسحاب') { return Container( decoration: const BoxDecoration(shape: BoxShape.circle, color: Color(0xFFE6681F)), @@ -264,7 +266,7 @@ Widget getIcon(String title) { height: 25.h), ), ); - } else if (title == 'Investment') { + } else if (title == 'Investment' || title == 'استثمار') { return Container( decoration: const BoxDecoration(shape: BoxShape.circle, color: Color(0xFF0172CB)), @@ -274,7 +276,7 @@ Widget getIcon(String title) { height: 25.h), ), ); - } else if (title == 'Yield') { + } else if (title == 'Yield' || title == 'عائد') { return Container( decoration: const BoxDecoration(shape: BoxShape.circle, color: Color(0xFF4C4AEF)), diff --git a/lib/features/MainScreens/Wallet/presentation/pages/wallet_screen.dart b/lib/features/MainScreens/Wallet/presentation/pages/wallet_screen.dart index 9b7b7f9..075434b 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/wallet_screen.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/wallet_screen.dart @@ -6,6 +6,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/utils/language/localizations_delegate.dart'; import 'wallet_layout.dart'; class WalletScreen extends StatefulWidget { @@ -24,6 +25,7 @@ class _WalletScreenState extends State { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); return Scaffold( backgroundColor: Colors.white, appBar: AppBar( @@ -38,7 +40,7 @@ class _WalletScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppText.walletTitle, + localizations.translate(AppText.walletTitle), style: GoogleFonts.dmSans( color: const Color(0xFF343434), fontSize: 14.sp, @@ -105,7 +107,7 @@ class _WalletScreenState extends State { ), ), Text( - 'Deposit', + localizations.translate(AppText.deposit), style: GoogleFonts.dmSans( color: const Color(0xFF363636), fontSize: 12.sp, @@ -140,7 +142,7 @@ class _WalletScreenState extends State { ), ), Text( - 'Withdraw', + localizations.translate(AppText.withdraw), style: GoogleFonts.dmSans( color: const Color(0xFF363636), fontSize: 12.sp, diff --git a/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/confirmation.dart b/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/confirmation.dart index 24a39b6..87e99ef 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/confirmation.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/confirmation.dart @@ -5,6 +5,8 @@ import 'package:tanami_app/core/routes/routes.dart'; import 'package:tanami_app/core/styles/app_text.dart'; import 'package:ticket_widget/ticket_widget.dart'; +import '../../../../../../core/utils/language/localizations_delegate.dart'; + class WithdrawalConfirmation extends StatefulWidget { const WithdrawalConfirmation({super.key}); @@ -13,16 +15,6 @@ class WithdrawalConfirmation extends StatefulWidget { } class _WithdrawalConfirmationState extends State { - final List titles = [ - AppText.paymentMethod, - AppText.accountName, - AppText.iban, - AppText.beneficiaryAddress, - AppText.bankName, - AppText.branchAddress, - AppText.SWIFTcode, - AppText.refid, - ]; final List values = [ 'Google/Apple Pay', 'Name Surname', @@ -36,6 +28,17 @@ class _WithdrawalConfirmationState extends State { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); + final List titles = [ + localizations.translate(AppText.paymentMethod), + localizations.translate(AppText.accountName), + localizations.translate(AppText.iban), + localizations.translate(AppText.beneficiaryAddress), + localizations.translate(AppText.bankName), + localizations.translate(AppText.branchAddress), + localizations.translate(AppText.SWIFTcode), + localizations.translate(AppText.refid), + ]; return WillPopScope( onWillPop: () async => false, child: Scaffold( @@ -47,7 +50,7 @@ class _WithdrawalConfirmationState extends State { scrolledUnderElevation: 0.0, centerTitle: true, title: Text( - AppText.previewTitle, + localizations.translate(AppText.previewTitle), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 20.sp, @@ -90,7 +93,7 @@ class _WithdrawalConfirmationState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppText.info, + localizations.translate(AppText.info), style: GoogleFonts.dmSans( color: const Color(0xFF015698), fontSize: 14.sp, @@ -101,7 +104,7 @@ class _WithdrawalConfirmationState extends State { height: 4.h, ), Text( - AppText.workingDays, + localizations.translate(AppText.workingDays), style: GoogleFonts.dmSans( color: const Color(0xFF015698), fontSize: 12.sp, @@ -162,7 +165,7 @@ class _WithdrawalConfirmationState extends State { height: 16.h, ), Text( - AppText.withdrawal, + localizations.translate(AppText.withdrawal), style: GoogleFonts.dmSans( color: const Color(0xFF191B1E), fontSize: 14.sp, @@ -273,7 +276,7 @@ class _WithdrawalConfirmationState extends State { padding: const EdgeInsets.symmetric(vertical: 20.0), child: Center( child: Text( - AppText.closeText, + localizations.translate(AppText.closeText), style: GoogleFonts.dmSans( color: Colors.white, fontSize: 14.sp, diff --git a/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/preview.dart b/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/preview.dart index 08db542..78e66f9 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/preview.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/preview.dart @@ -6,6 +6,8 @@ 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/utils/language/localizations_delegate.dart'; + class WithdrawalPreview extends StatefulWidget { const WithdrawalPreview({super.key}); @@ -16,13 +18,14 @@ class WithdrawalPreview extends StatefulWidget { class _WithdrawalPreviewState extends State { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); List titles = [ - AppText.accountHolderName, - AppText.iban, - AppText.beneficiaryAddress, - AppText.bankName, - AppText.branchAddress, - AppText.SWIFTcode, + localizations.translate(AppText.accountHolderName), + localizations.translate(AppText.iban), + localizations.translate(AppText.beneficiaryAddress), + localizations.translate(AppText.bankName), + localizations.translate(AppText.branchAddress), + localizations.translate(AppText.SWIFTcode), ]; List values = [ 'Name Surname', @@ -40,7 +43,7 @@ class _WithdrawalPreviewState extends State { scrolledUnderElevation: 0.0, centerTitle: true, title: Text( - AppText.previewTitle, + localizations.translate(AppText.previewTitle), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 20.sp, @@ -67,7 +70,7 @@ class _WithdrawalPreviewState extends State { ), Expanded( child: Text( - AppText.info1, + localizations.translate(AppText.info1), style: GoogleFonts.dmSans( color: const Color(0xFF015698), fontSize: 12.sp, @@ -84,7 +87,7 @@ class _WithdrawalPreviewState extends State { text: TextSpan( children: [ TextSpan( - text: '${AppText.balance}: ', + text: '${localizations.translate(AppText.balance)}: ', style: GoogleFonts.dmSans( color: Colors.grey, fontSize: 12.sp, @@ -141,7 +144,7 @@ class _WithdrawalPreviewState extends State { width: 12.w, ), Text( - AppText.withdrawTitle, + localizations.translate(AppText.withdrawTitle), style: GoogleFonts.dmSans( color: Colors.black, fontSize: 17.sp, @@ -167,7 +170,7 @@ class _WithdrawalPreviewState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppText.withdrawAmt, + localizations.translate(AppText.withdrawAmt), style: GoogleFonts.dmSans( color: const Color(0xFF535353), fontSize: 14.sp, @@ -222,7 +225,7 @@ class _WithdrawalPreviewState extends State { ), Expanded( child: Text( - AppText.info2, + localizations.translate(AppText.info2), style: GoogleFonts.dmSans( color: const Color(0xFF015698), fontSize: 12.sp, @@ -242,7 +245,7 @@ class _WithdrawalPreviewState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppText.withdrawDetails, + localizations.translate(AppText.withdrawDetails), style: GoogleFonts.dmSans( color: Colors.black, fontSize: 15.sp, @@ -330,7 +333,7 @@ class _WithdrawalPreviewState extends State { padding: const EdgeInsets.symmetric(vertical: 20.0), child: Center( child: Text( - AppText.submit, + localizations.translate(AppText.submit), style: GoogleFonts.dmSans( color: Colors.white, fontSize: 14.sp, diff --git a/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/withdrawalScreen.dart b/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/withdrawalScreen.dart index c478860..fa0ee48 100644 --- a/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/withdrawalScreen.dart +++ b/lib/features/MainScreens/Wallet/presentation/pages/withdrawal/withdrawalScreen.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/utils/language/localizations_delegate.dart'; import '../../../../../../core/utils/text_formatter/comma_input_text_formatter.dart'; class WithdrawalScreen extends StatefulWidget { @@ -19,13 +20,14 @@ class WithdrawalScreen extends StatefulWidget { class _WithdrawalScreenState extends State { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); List titles = [ - '${AppText.accountHolderName} *', - '${AppText.iban} *', - AppText.beneficiaryAddress, - AppText.bankName, - AppText.branchAddress, - AppText.SWIFTcode, + '${localizations.translate(AppText.accountHolderName)} *', + '${localizations.translate(AppText.iban)} *', + localizations.translate(AppText.beneficiaryAddress), + localizations.translate(AppText.bankName), + localizations.translate(AppText.branchAddress), + localizations.translate(AppText.SWIFTcode), ]; return Scaffold( backgroundColor: Colors.white, @@ -35,7 +37,7 @@ class _WithdrawalScreenState extends State { scrolledUnderElevation: 0.0, centerTitle: true, title: Text( - AppText.withdrawalScreenTitle, + localizations.translate(AppText.withdrawalScreenTitle), style: GoogleFonts.dmSans( color: const Color(0xFF272727), fontSize: 20.sp, @@ -53,7 +55,7 @@ class _WithdrawalScreenState extends State { text: TextSpan( children: [ TextSpan( - text: '${AppText.balance}: ', + text: '${localizations.translate(AppText.balance)}: ', style: GoogleFonts.dmSans( color: Colors.grey, fontSize: 12.sp, @@ -110,7 +112,7 @@ class _WithdrawalScreenState extends State { width: 12.w, ), Text( - AppText.withdrawTitle, + localizations.translate(AppText.withdrawTitle), style: GoogleFonts.dmSans( color: Colors.black, fontSize: 17.sp, @@ -218,7 +220,8 @@ class _WithdrawalScreenState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppText.processingFees, + localizations + .translate(AppText.processingFees), style: GoogleFonts.dmSans( color: const Color(0xFF535353), fontSize: 14.sp, @@ -314,7 +317,7 @@ class _WithdrawalScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppText.withdrawDetails, + localizations.translate(AppText.withdrawDetails), style: GoogleFonts.dmSans( color: Colors.black, fontSize: 15.sp, @@ -325,7 +328,7 @@ class _WithdrawalScreenState extends State { height: 3.h, ), Text( - AppText.required, + localizations.translate(AppText.required), style: GoogleFonts.dmSans( color: const Color(0xFF8D8D8D), fontSize: 14.sp, @@ -453,7 +456,7 @@ class _WithdrawalScreenState extends State { ), child: Center( child: Text( - AppText.next, + localizations.translate(AppText.next), style: GoogleFonts.dmSans( color: Colors.white, fontSize: 14.sp, diff --git a/lib/features/MainScreens/Wallet/presentation/widgets/deposit_pay_method_section.dart b/lib/features/MainScreens/Wallet/presentation/widgets/deposit_pay_method_section.dart index 2fe4373..f454d57 100644 --- a/lib/features/MainScreens/Wallet/presentation/widgets/deposit_pay_method_section.dart +++ b/lib/features/MainScreens/Wallet/presentation/widgets/deposit_pay_method_section.dart @@ -7,6 +7,7 @@ import 'package:tanami_app/core/styles/app_text.dart'; import 'package:tanami_app/shared/components/text_widget.dart'; import '../../../../../../core/styles/app_color.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../countrySelection/presentation/bloc/choose_country_bloc.dart'; import '../../../../countrySelection/presentation/bloc/choose_country_event.dart'; import '../../../../countrySelection/presentation/bloc/choose_country_state.dart'; @@ -16,6 +17,7 @@ class DepositPayMethodSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); final radioBloc = context.read(); return BlocBuilder( builder: (context, state) { @@ -25,7 +27,8 @@ class DepositPayMethodSection extends StatelessWidget { } return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - TextWidget().text15W700(AppText.choosePaymentMethodText, + TextWidget().text15W700( + localizations.translate(AppText.choosePaymentMethodText), clr: AppColor.plainBlack), const Gap(16), GestureDetector( @@ -83,7 +86,8 @@ class DepositPayMethodSection extends StatelessWidget { const Gap(5), SvgPicture.asset(AppImages.walletIcon), const Gap(5), - TextWidget().text14W700(AppText.bankTransfer, + TextWidget().text14W700( + localizations.translate(AppText.bankTransfer), clr: AppColor.textLabelColor), ], ), @@ -93,7 +97,7 @@ class DepositPayMethodSection extends StatelessWidget { Padding( padding: const EdgeInsets.all(12), child: TextWidget().text14W500( - AppText.bankTransferText, + localizations.translate(AppText.bankTransferText), clr: AppColor.textLabelColor, txtAlign: TextAlign.start, ), @@ -160,7 +164,8 @@ class DepositPayMethodSection extends StatelessWidget { const Gap(5), SvgPicture.asset(AppImages.applePayIcon), const Gap(5), - TextWidget().text14W700(AppText.applePayText, + TextWidget().text14W700( + localizations.translate(AppText.applePayText), clr: AppColor.textLabelColor), ], ), @@ -170,7 +175,8 @@ class DepositPayMethodSection extends StatelessWidget { Padding( padding: const EdgeInsets.all(12.0), child: TextWidget().text14W500( - AppText.instantTransferFundsApplePayText, + localizations + .translate(AppText.instantTransferFundsApplePayText), clr: AppColor.textLabelColor, txtAlign: TextAlign.start, ), diff --git a/lib/features/MainScreens/Wallet/presentation/widgets/wallet_list_section.dart b/lib/features/MainScreens/Wallet/presentation/widgets/wallet_list_section.dart index 44125e3..0ccb777 100644 --- a/lib/features/MainScreens/Wallet/presentation/widgets/wallet_list_section.dart +++ b/lib/features/MainScreens/Wallet/presentation/widgets/wallet_list_section.dart @@ -9,6 +9,7 @@ import '../../../../../core/routes/routes.dart'; import '../../../../../core/styles/app_color.dart'; import '../../../../../core/styles/app_images.dart'; import '../../../../../core/styles/app_text.dart'; +import '../../../../../core/utils/language/localizations_delegate.dart'; import '../../../../../shared/components/text_widget.dart'; class WalletListSection extends StatelessWidget { @@ -16,6 +17,50 @@ class WalletListSection extends StatelessWidget { @override Widget build(BuildContext context) { + var localizations = AppLocalizations.of(context); + List data = [ + { + 'title': localizations.translate(AppText.deposit), + 'subTitle': '', + 'dateTime': '10/04/2024 22:04', + 'value': '+ SAR 100,000', + 'subValue': '', + 'onHold': false, + }, + { + 'title': localizations.translate(AppText.withdrawal), + 'subTitle': '', + 'dateTime': '10/04/2024 22:04', + 'value': '- SAR 100,000', + 'subValue': '', + 'onHold': true, + }, + { + 'title': localizations.translate(AppText.investment), + 'subTitle': 'Name of Investment', + 'dateTime': '10/04/2024 22:04', + 'value': '- SAR 100,000', + 'subValue': '', + 'onHold': false, + }, + { + 'title': localizations.translate(AppText.yield), + 'subTitle': 'Name of Investment', + 'dateTime': '10/04/2024 22:04', + 'value': '+ SAR 100,000', + 'subValue': '+ \$100,00', + 'onHold': false, + }, + { + 'title': localizations.translate(AppText.refund), + 'subTitle': '', + 'dateTime': '10/04/2024 22:04', + 'value': '- SAR 100,000', + 'subValue': '', + 'onHold': true, + }, + ]; + return Expanded( child: ListView.builder( shrinkWrap: true, @@ -75,7 +120,10 @@ class WalletListSection extends StatelessWidget { ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - TextWidget().text14W700(AppText.onHold, + TextWidget().text14W700( + localizations.translate( + AppText.onHold, + ), clr: AppColor.onHoldTextColor), Gap(4.h), ], @@ -154,46 +202,3 @@ Widget getIcon(String title) { ); } } - -List data = [ - { - 'title': AppText.deposit, - 'subTitle': '', - 'dateTime': '10/04/2024 22:04', - 'value': '+ SAR 100,000', - 'subValue': '', - 'onHold': false, - }, - { - 'title': AppText.withdrawal, - 'subTitle': '', - 'dateTime': '10/04/2024 22:04', - 'value': '- SAR 100,000', - 'subValue': '', - 'onHold': true, - }, - { - 'title': AppText.investment, - 'subTitle': 'Name of Investment', - 'dateTime': '10/04/2024 22:04', - 'value': '- SAR 100,000', - 'subValue': '', - 'onHold': false, - }, - { - 'title': AppText.yield, - 'subTitle': 'Name of Investment', - 'dateTime': '10/04/2024 22:04', - 'value': '+ SAR 100,000', - 'subValue': '+ \$100,00', - 'onHold': false, - }, - { - 'title': AppText.refund, - 'subTitle': '', - 'dateTime': '10/04/2024 22:04', - 'value': '- SAR 100,000', - 'subValue': '', - 'onHold': true, - }, -]; diff --git a/lib/features/languageChange/presentation/widgets/bottom_section.dart b/lib/features/languageChange/presentation/widgets/bottom_section.dart index 2bb7ea3..4be6407 100644 --- a/lib/features/languageChange/presentation/widgets/bottom_section.dart +++ b/lib/features/languageChange/presentation/widgets/bottom_section.dart @@ -7,13 +7,17 @@ import '../../../../core/routes/routes.dart'; import '../../../../core/styles/app_color.dart'; import '../../../../core/styles/app_text.dart'; import '../../../../core/utils/language/localizations_delegate.dart'; +import '../../../../core/utils/secure/secure_storage_service.dart'; import '../../../../shared/components/bloc/language/lng_bloc.dart'; import '../../../../shared/components/bloc/language/lng_event.dart'; import '../../../../shared/components/button_widget.dart'; import '../../../../shared/components/text_widget.dart'; +import '../bloc/choose_language_bloc.dart'; Widget bottomSection(BuildContext context) { var localizations = AppLocalizations.of(context); + final radioBloc = context.read(); + SecureStorageService secureStorageService = SecureStorageService(); return Column( mainAxisSize: MainAxisSize.min, children: [ @@ -26,13 +30,16 @@ Widget bottomSection(BuildContext context) { height: 56.h, child: ButtonWidget().elevatedBtn( txtClr: AppColor.plainWhite, - function: () { - var newLocale = - context.read().state.locale.languageCode == - 'en' - ? const Locale('ar') - : const Locale('en'); + function: () async { + var newLocale = radioBloc.selectedCountry == 1 + ? const Locale('ar') + : const Locale('en'); context.read().add(ChangeLanguage(newLocale)); + if (radioBloc.selectedCountry == 1) { + await secureStorageService.write('languageSelected', "ar"); + } else { + await secureStorageService.write('languageSelected', "en"); + } goRouter.pop(); }, text: localizations.translate(AppText.submitText), diff --git a/lib/features/languageChange/presentation/widgets/language_change_list.dart b/lib/features/languageChange/presentation/widgets/language_change_list.dart index 9a54e29..ff75707 100644 --- a/lib/features/languageChange/presentation/widgets/language_change_list.dart +++ b/lib/features/languageChange/presentation/widgets/language_change_list.dart @@ -4,6 +4,7 @@ import 'package:tanami_app/core/styles/app_color.dart'; import 'package:tanami_app/core/styles/app_text.dart'; import 'package:tanami_app/shared/components/text_widget.dart'; +import '../../../../core/utils/secure/secure_storage_service.dart'; import '../bloc/choose_language_bloc.dart'; import '../bloc/choose_language_event.dart'; import '../bloc/choose_language_state.dart'; @@ -13,10 +14,14 @@ class CountrySelectionList extends StatelessWidget { @override Widget build(BuildContext context) { + SecureStorageService secureStorageService = SecureStorageService(); + final radioBloc = context.read(); + _initializeLanguageSelection(radioBloc, secureStorageService); return BlocBuilder( builder: (context, state) { int selectedIndex = 0; + if (state is ChooseLanguageSelectionChanged) { selectedIndex = state.selectedIndex; } @@ -44,6 +49,20 @@ class CountrySelectionList extends StatelessWidget { }, ); } + + void _initializeLanguageSelection(ChooseLanguageBloc radioBloc, + SecureStorageService secureStorageService) async { + String languageSelected = + (await secureStorageService.read("languageSelected")) ?? ""; + + if (languageSelected.isEmpty) { + radioBloc.add(const ChooseLanguageSelected(0)); + } else if (languageSelected == "en") { + radioBloc.add(const ChooseLanguageSelected(0)); + } else { + radioBloc.add(const ChooseLanguageSelected(1)); + } + } } List languageList = [ diff --git a/lib/main.dart b/lib/main.dart index 12a357c..81353c2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,11 +8,13 @@ import 'package:local_auth/local_auth.dart'; import 'core/routes/routes.dart'; import 'core/utils/connectivity/network_connectivity.dart'; import 'core/utils/language/localizations_delegate.dart'; +import 'core/utils/secure/secure_storage_service.dart'; import 'features/biometric/presentation/bloc/biometric_bloc.dart'; import 'features/biometric/presentation/bloc/biometric_event.dart'; import 'features/countrySelection/presentation/bloc/choose_country_bloc.dart'; import 'shared/components/bloc/bottom_nav_bar/bottom_navigation_bloc.dart'; import 'shared/components/bloc/language/lng_bloc.dart'; +import 'shared/components/bloc/language/lng_event.dart'; import 'shared/components/bloc/language/lng_state.dart'; /* CREATED BY - JAYESH JAIN @@ -34,15 +36,15 @@ Future main() async { DeviceOrientation.portraitUp, ]).then((value) => runApp(const MyApp() // StatsFl( - // isEnabled: true, //Toggle on/off - // width: 200, //Set size - // height: 50, // - // maxFps: 60, // Support custom FPS target (default is 60) - // showText: true, // Hide text label - // sampleTime: .5, //Interval between fps calculations, in seconds. - // totalTime: 15, //Total length of timeline, in seconds. - // align: Alignment.center, //Alignment of statsbox - // child: const MyApp()) + // isEnabled: true, //Toggle on/off + // width: 200, //Set size + // height: 50, // + // maxFps: 60, // Support custom FPS target (default is 60) + // showText: true, // Hide text label + // sampleTime: .5, //Interval between fps calculations, in seconds. + // totalTime: 15, //Total length of timeline, in seconds. + // align: Alignment.center, //Alignment of statsbox + // child: const MyApp() )); } @@ -54,13 +56,15 @@ class MyApp extends StatefulWidget { } class _MyAppState extends State with WidgetsBindingObserver { + SecureStorageService secureStorageService = SecureStorageService(); final NetworkConnectivity _networkConnectivity = NetworkConnectivity(onStatusChange: (_) {}); + String languageSelected = ""; @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); - + changeLanguage(); // Initialize the NetworkConnectivity instance. _networkConnectivity.initialize(); } @@ -72,10 +76,18 @@ class _MyAppState extends State with WidgetsBindingObserver { super.dispose(); } + Future changeLanguage() async { + languageSelected = + (await secureStorageService.read("languageSelected")) ?? ""; + } + @override Widget build(BuildContext context) { return MultiBlocProvider( providers: [ + BlocProvider( + create: (_) => LocalizationBloc(), + ), BlocProvider( create: (context) => RadioBloc(), ), @@ -86,14 +98,29 @@ class _MyAppState extends State with WidgetsBindingObserver { create: (_) => BiometricBloc(LocalAuthentication())..add(CheckBiometricEvent()), ), - BlocProvider( - create: (_) => LocalizationBloc(), - ), ], child: ScreenUtilInit( builder: (BuildContext context, Widget? child) => BlocBuilder( builder: (context, state) { + changeLanguage().then( + (value) { + if (languageSelected.isEmpty) { + context + .read() + .add(const ChangeLanguage(Locale('en'))); + } else if (languageSelected == "en") { + context + .read() + .add(const ChangeLanguage(Locale('en'))); + } else { + context + .read() + .add(const ChangeLanguage(Locale('ar'))); + } + }, + ); + return MaterialApp.router( title: 'Tanami Capital', locale: state.locale, diff --git a/lib/shared/components/common_bottom_navigation.dart b/lib/shared/components/common_bottom_navigation.dart index 2cdc7f0..7d3f6e4 100644 --- a/lib/shared/components/common_bottom_navigation.dart +++ b/lib/shared/components/common_bottom_navigation.dart @@ -4,11 +4,13 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:tanami_app/core/styles/app_color.dart'; +import '../../core/utils/language/localizations_delegate.dart'; import 'bloc/bottom_nav_bar/bottom_navigation_bloc.dart'; import 'bloc/bottom_nav_bar/bottom_navigation_event.dart'; Widget bottomnavigationbar( BuildContext context, selectedIndex, PageController pageController) { + var localizations = AppLocalizations.of(context); return BottomNavigationBar( backgroundColor: AppColor.plainWhite, type: BottomNavigationBarType.fixed, @@ -43,7 +45,7 @@ Widget bottomnavigationbar( height: 30.h, width: 30.w, ), - label: 'Wallet', + label: localizations.translate('Wallet'), ), BottomNavigationBarItem( icon: Image.asset( @@ -56,7 +58,7 @@ Widget bottomnavigationbar( height: 30.h, width: 30.w, ), - label: 'Portfolio', + label: localizations.translate('Portfolio'), ), BottomNavigationBarItem( icon: Image.asset( @@ -69,7 +71,7 @@ Widget bottomnavigationbar( height: 28.h, width: 28.w, ), - label: 'Invest', + label: localizations.translate('Invest'), ), BottomNavigationBarItem( icon: Image.asset( @@ -82,7 +84,7 @@ Widget bottomnavigationbar( height: 30.h, width: 30.w, ), - label: 'Academy', + label: localizations.translate('Academy'), ), BottomNavigationBarItem( icon: Image.asset( @@ -95,7 +97,7 @@ Widget bottomnavigationbar( height: 30.h, width: 30.w, ), - label: 'Settings', + label: localizations.translate('Settings'), ), ], );