bugs fixed

This commit is contained in:
meet2711
2024-06-20 15:32:56 +05:30
parent 8ad120714f
commit 6964668987
23 changed files with 369 additions and 906 deletions

View File

@@ -22,9 +22,9 @@ class InvestDetailsScreen extends StatelessWidget {
bottomNavigationBar: type == "closed"
? null
: Container(
padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 26),
margin: const EdgeInsets.all(10),
width: 1.sw,
height: 105.h,
height: 65.h,
child: ButtonWidget().elevatedBtn(
text: AppText.investText,
clr: AppColor.primaryColor2,

View File

@@ -1,20 +1,31 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:tanami_app/features/MainScreens/Invest/presentation/pages/payment/confirm_investment_layout.dart';
import '../../../../../../core/styles/app_color.dart';
import '../../../../../../core/styles/app_text.dart';
import '../../../../../../shared/components/appbar_widget.dart';
class ConfirmInvestmentScreen extends StatelessWidget {
const ConfirmInvestmentScreen({super.key});
@override
Widget build(BuildContext context) {
return const Scaffold(
return Scaffold(
backgroundColor: AppColor.plainWhite,
appBar: AppBarWidget(
height: 75,
titleTxt: AppText.confirmInvestmentText,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
scrolledUnderElevation: 0.0,
centerTitle: true,
title: Text(
AppText.confirmInvestmentText,
style: GoogleFonts.dmSans(
color: const Color(0xFF272727),
fontSize: 20.sp,
fontWeight: FontWeight.w700,
),
),
),
body: ConfirmInvestmentLayout(),
);

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_bottom_section.dart';
import 'package:tanami_app/features/MainScreens/Invest/presentation/widgets/payment/invest_pay_method_section.dart';
@@ -16,6 +17,7 @@ class InvestPaymentLayout extends StatelessWidget {
InvestPayTopSection(),
InvestPayMethodSection(),
InvestPayBottomSection(),
Gap(10),
],
),
);

View File

@@ -108,7 +108,7 @@ class InvestDetailCarouselView extends StatelessWidget {
color: const Color(0xFFE4F5E9),
borderRadius: BorderRadius.circular(30.0),
),
child: TextWidget().text12W700(
child: TextWidget().text11W700(
'Asset Class',
clr: AppColor.selectedItemColor,
),
@@ -134,7 +134,7 @@ class InvestDetailCarouselView extends StatelessWidget {
Gap(
5.w,
),
TextWidget().text12W500(
TextWidget().text11W500(
'${AppText.closingDateText} Jul 10 2025',
clr: AppColor.plainBlack,
),

View File

@@ -7,7 +7,6 @@ import '../../../../../../core/routes/routes.dart';
import '../../../../../../core/styles/app_color.dart';
import '../../../../../../core/styles/app_text.dart';
import '../../../../../../shared/components/button_widget.dart';
import '../../../../../../shared/components/text_widget.dart';
class InvestPayBottomSection extends StatelessWidget {
const InvestPayBottomSection({super.key});
@@ -24,53 +23,22 @@ class InvestPayBottomSection extends StatelessWidget {
width: 1.sw,
height: 56.h,
child: ButtonWidget().elevatedBtn(
txtClr: // isButtonEnabled ?
AppColor.plainWhite,
// : AppColor.inactiveBtnTxtColor,
txtClr: AppColor.plainWhite,
function: () {
// isButtonEnabled
// ? context.read<ChangePasswordBloc>().add(
// ChangePasswordSubmitted(
// context
// .read<ChangePasswordBloc>()
// .currentPasswordTextField
// .text,
// context
// .read<ChangePasswordBloc>()
// .passwordTextField
// .text,
// context
// .read<ChangePasswordBloc>()
// .repeatPasswordTextField
// .text,
// ),
// )
// : null;
// showDialog(
// context: context,
// builder: (context) {
// return const InvestmentOverSubscribedDialog();
// },
// );
goRouter.pushNamed(RouteName.confirmInvestScreen);
},
text: AppText.nextText,
clr:
// isButtonEnabled ?
AppColor.primaryColor2
// : AppColor.inactiveBtnColor,
),
clr: AppColor.primaryColor2),
),
const Gap(5),
ButtonWidget().textBtn(
function: () {
goRouter.pop();
},
text: TextWidget().text14W700(AppText.backText,
clr: AppColor.textLabelColor,
textDecoration: TextDecoration.underline)),
ButtonWidget().textBorderBtn(
borderClr: AppColor.txtBorderColor,
clr: AppColor.plainWhite,
function: () {
goRouter.pop();
},
text: AppText.backText,
),
],
);
}

View File

@@ -94,9 +94,13 @@ class InvestPayMethodSection extends StatelessWidget {
),
Container(
decoration: const BoxDecoration(
border: Border(
bottom: BorderSide(
width: 1, color: Colors.grey))),
border: Border(
bottom: BorderSide(
width: 1,
color: Colors.grey,
),
),
),
child: Row(
children: [
RichText(
@@ -175,6 +179,7 @@ class InvestPayMethodSection extends StatelessWidget {
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: const EdgeInsets.all(12),
@@ -209,10 +214,12 @@ class InvestPayMethodSection extends StatelessWidget {
),
),
Padding(
padding: const EdgeInsets.all(12.0),
padding: const EdgeInsets.all(12),
child: TextWidget().text14W500(
AppText.instantTransferFundsApplePayText,
clr: AppColor.textLabelColor),
AppText.instantTransferFundsApplePayText,
clr: AppColor.textLabelColor,
txtAlign: TextAlign.start,
),
),
const Gap(12),
],

View File

@@ -15,25 +15,19 @@ class SettingsLayout extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColor.plainWhite,
body: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 10,
),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
kycCard(),
const Gap(15),
const GeneralSettingsSection(),
const Gap(15),
const PrivacySettingsSection(),
const Gap(15),
const SupportSettingsSection(),
const SettingsBottomSection(),
],
),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
kycCard(),
const Gap(15),
const GeneralSettingsSection(),
const Gap(15),
const PrivacySettingsSection(),
const Gap(15),
const SupportSettingsSection(),
const SettingsBottomSection(),
],
),
),
);

View File

@@ -16,19 +16,20 @@ class _SettingsScreenState extends State<SettingsScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColor.plainWhite,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
scrolledUnderElevation: 0,
automaticallyImplyLeading: false,
centerTitle: true,
title: TextWidget().text22W700(
AppText.settingsText,
clr: AppColor.charcoalColor,
),
titleSpacing: 16,
backgroundColor: AppColor.plainWhite,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
scrolledUnderElevation: 0,
automaticallyImplyLeading: false,
centerTitle: true,
title: TextWidget().text22W700(
AppText.settingsText,
clr: AppColor.charcoalColor,
),
body: const SettingsLayout());
titleSpacing: 16,
),
body: SettingsLayout(),
);
}
}

View File

@@ -17,41 +17,46 @@ class GeneralSettingsSection extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text14W600(
AppText.generalText,
clr: AppColor.hintTextColor,
),
const Gap(5),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextWidget().text14W600(
AppText.notificationText,
clr: AppColor.textLabelColor,
),
BlocProvider(
create: (_) => ToggleBloc(),
child: const CustomToggle(),
)
],
),
const Gap(12),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(RouteName.languageChangeScreen);
},
icon: AppImages.languageIcon,
title: AppText.languageText,
trailing: AppText.englishText,
),
const Gap(10),
const Divider(
color: AppColor.academyCardTextColor,
),
],
return Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text14W600(
AppText.generalText,
clr: AppColor.hintTextColor,
),
const Gap(5),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextWidget().text14W600(
AppText.notificationText,
clr: AppColor.textLabelColor,
),
BlocProvider(
create: (_) => ToggleBloc(),
child: const CustomToggle(),
)
],
),
const Gap(12),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(RouteName.languageChangeScreen);
},
icon: AppImages.languageIcon,
title: AppText.languageText,
trailing: AppText.englishText,
),
const Gap(10),
const Divider(
color: AppColor.academyCardTextColor,
),
],
),
);
}
}

View File

@@ -7,59 +7,65 @@ import 'package:tanami_app/core/styles/app_text.dart';
import 'package:tanami_app/shared/components/text_widget.dart';
Widget kycCard() {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
decoration: ShapeDecoration(
color: const Color(0xFFD9EDE0),
shape: RoundedRectangleBorder(
side: const BorderSide(
width: 1,
color: AppColor.kycCardBgColor,
),
borderRadius: BorderRadius.circular(22),
),
shadows: const [
BoxShadow(
color: Color(0x33066123),
blurRadius: 8,
offset: Offset(-3, -3),
spreadRadius: 0,
),
BoxShadow(
color: Color(0x26122F1A),
blurRadius: 8,
offset: Offset(3, 3),
spreadRadius: 0,
)
],
return Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 10,
),
child: Row(
children: [
SvgPicture.asset(
AppImages.upgradeIcon,
),
const Gap(8),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text14W600(
AppText.experiencedInvestorText,
clr: AppColor.kycCardTextColor,
),
TextWidget().text11W500(
AppText.upgradeText,
clr: AppColor.kycCardTextColor,
),
],
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
decoration: ShapeDecoration(
color: const Color(0xFFD9EDE0),
shape: RoundedRectangleBorder(
side: const BorderSide(
width: 1,
color: AppColor.kycCardBgColor,
),
borderRadius: BorderRadius.circular(22),
),
const Gap(8),
const Icon(
Icons.arrow_forward_ios_rounded,
color: AppColor.kycCardTextColor,
)
],
shadows: const [
BoxShadow(
color: Color(0x33066123),
blurRadius: 8,
offset: Offset(-3, -3),
spreadRadius: 0,
),
BoxShadow(
color: Color(0x26122F1A),
blurRadius: 8,
offset: Offset(3, 3),
spreadRadius: 0,
)
],
),
child: Row(
children: [
SvgPicture.asset(
AppImages.upgradeIcon,
),
const Gap(8),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text14W600(
AppText.experiencedInvestorText,
clr: AppColor.kycCardTextColor,
),
TextWidget().text11W500(
AppText.upgradeText,
clr: AppColor.kycCardTextColor,
),
],
),
),
const Gap(8),
const Icon(
Icons.arrow_forward_ios_rounded,
color: AppColor.kycCardTextColor,
)
],
),
),
);
}

View File

@@ -17,54 +17,59 @@ class PrivacySettingsSection extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text14W600(
AppText.privacySettingsText,
clr: AppColor.hintTextColor,
),
const Gap(5),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextWidget().text14W600(
AppText.biometricText,
clr: AppColor.textLabelColor,
),
BlocProvider(
create: (_) => ToggleBloc(),
child: const CustomToggle(),
)
],
),
const Gap(12),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(
RouteName.changePasswordScreen,
);
},
icon: AppImages.resetPasswordIcon,
title: AppText.resetPasswordText,
trailing: "",
),
const Gap(8),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(RouteName.pinScreen, pathParameters: {
"fromScreen": "reset-pin",
});
},
icon: AppImages.resetPinIcon,
title: AppText.resetPinCodeText,
trailing: "",
),
const Gap(10),
const Divider(
color: AppColor.academyCardTextColor,
),
],
return Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text14W600(
AppText.privacySettingsText,
clr: AppColor.hintTextColor,
),
const Gap(5),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextWidget().text14W600(
AppText.biometricText,
clr: AppColor.textLabelColor,
),
BlocProvider(
create: (_) => ToggleBloc(),
child: const CustomToggle(),
)
],
),
const Gap(12),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(
RouteName.changePasswordScreen,
);
},
icon: AppImages.resetPasswordIcon,
title: AppText.resetPasswordText,
trailing: "",
),
const Gap(8),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(RouteName.pinScreen, pathParameters: {
"fromScreen": "reset-pin",
});
},
icon: AppImages.resetPinIcon,
title: AppText.resetPinCodeText,
trailing: "",
),
const Gap(10),
const Divider(
color: AppColor.academyCardTextColor,
),
],
),
);
}
}

View File

@@ -34,15 +34,6 @@ class SettingsBottomSection extends StatelessWidget {
),
),
const Gap(5),
// ButtonWidget().textBtn(
// function: () {
// goRouter.pushNamed(RouteName.deleteAccountScreen);
// },
// text: TextWidget().text14W700(
// AppText.deleteAccountText,
// clr: AppColor.hintTextColor,
// textDecoration: TextDecoration.underline,
// )),
Container(
width: 1.sw,
height: 56.h,
@@ -56,6 +47,7 @@ class SettingsBottomSection extends StatelessWidget {
clr: AppColor.plainWhite,
),
),
const Gap(25),
],
);
}

View File

@@ -14,50 +14,55 @@ class SupportSettingsSection extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text14W600(
AppText.supportText,
clr: AppColor.hintTextColor,
),
const Gap(8),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(RouteName.contactAdminScreen);
},
icon: AppImages.contactIcon,
title: AppText.contactAdminText,
trailing: "",
),
const Gap(8),
SettingsListItem(
onTapFunc: () {},
icon: AppImages.privacyIcon,
title: AppText.privacyPolicy,
trailing: "",
),
const Gap(8),
SettingsListItem(
onTapFunc: () {},
icon: AppImages.privacyIcon,
title: AppText.termsAndCondition,
trailing: "",
),
const Gap(8),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(RouteName.faqScreen);
},
icon: AppImages.faqIcon,
title: AppText.faqText,
trailing: "",
),
const Gap(10),
const Divider(
color: AppColor.academyCardTextColor,
),
],
return Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text14W600(
AppText.supportText,
clr: AppColor.hintTextColor,
),
const Gap(8),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(RouteName.contactAdminScreen);
},
icon: AppImages.contactIcon,
title: AppText.contactAdminText,
trailing: "",
),
const Gap(8),
SettingsListItem(
onTapFunc: () {},
icon: AppImages.privacyIcon,
title: AppText.privacyPolicy,
trailing: "",
),
const Gap(8),
SettingsListItem(
onTapFunc: () {},
icon: AppImages.privacyIcon,
title: AppText.termsAndCondition,
trailing: "",
),
const Gap(8),
SettingsListItem(
onTapFunc: () {
goRouter.pushNamed(RouteName.faqScreen);
},
icon: AppImages.faqIcon,
title: AppText.faqText,
trailing: "",
),
const Gap(10),
const Divider(
color: AppColor.academyCardTextColor,
),
],
),
);
}
}

View File

@@ -48,40 +48,25 @@ class _DepositScreenState extends State<DepositScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 0.55.sw,
decoration: const BoxDecoration(
border: Border(
bottom: BorderSide(width: 1, color: Colors.grey))),
child: Row(
RichText(
text: TextSpan(
children: [
RichText(
text: TextSpan(
children: [
TextSpan(
text: '${AppText.balance}: ',
style: GoogleFonts.dmSans(
color: Colors.grey,
fontSize: 12.0,
fontWeight: FontWeight.bold,
),
),
TextSpan(
text: 'SAR 178,000',
style: GoogleFonts.dmSans(
color: Colors.black,
fontSize: 14.0,
fontWeight: FontWeight.bold,
),
),
],
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,
),
),
const Icon(
Icons.arrow_forward,
color: Colors.grey,
size: 15,
)
],
),
),
@@ -418,20 +403,20 @@ class _DepositScreenState extends State<DepositScreen> {
),
),
),
bottomNavigationBar: GestureDetector(
onTap: () {
goRouter.pushNamed(RouteName.depositPreview);
},
child: Container(
margin: const EdgeInsets.all(10.0),
height: 65.h,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(22.r),
color: const Color(0xFF004717),
),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 20.0),
bottomNavigationBar: Padding(
padding: MediaQuery.of(context).viewInsets,
child: GestureDetector(
onTap: () {
goRouter.pushNamed(RouteName.depositPreview);
},
child: Container(
margin: const EdgeInsets.all(10.0),
height: 65.h,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(22.r),
color: const Color(0xFF004717),
),
child: Center(
child: Text(
AppText.depositNoti,

View File

@@ -1,330 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gap/gap.dart';
import 'package:google_fonts/google_fonts.dart';
import '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 'package:ticket_widget/ticket_widget.dart';
import '../../../../../core/styles/app_color.dart';
import '../../../../../shared/components/button_widget.dart';
import '../widgets/wallet_list_section.dart';
import '../widgets/yield_detail_section.dart';
class WalletDetailsScreen extends StatelessWidget {
final String type;
WalletDetailsScreen({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',
'Name Surname',
'DE 1234 5678 9012 3456',
'Hohenzollernring 58, 95444',
'Name Bank',
'Hohenzollernring 58, 95444',
'BC12345',
'FRYU FHDU 1234',
];
@override
Widget build(BuildContext context) {
return (type == 'confirm-investment')
? WillPopScope(
onWillPop: () async => false,
child: Scaffold(
backgroundColor: Colors.white,
bottomNavigationBar: Container(
margin: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 15,
),
width: 1.sw,
height: 60.h,
child: ButtonWidget().elevatedBtn(
txtClr: AppColor.plainWhite,
function: () {
goRouter.pop();
goRouter.pop();
goRouter.pop();
goRouter.pop();
goRouter.pop();
},
text: AppText.closeText,
clr: AppColor.primaryColor2,
),
),
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
automaticallyImplyLeading: false,
actions: [
IconButton(
onPressed: () {
goRouter.pop();
goRouter.pop();
goRouter.pop();
goRouter.pop();
goRouter.pop();
},
icon: const Icon(
Icons.close_sharp,
color: Color(0xFF363636),
),
),
],
scrolledUnderElevation: 0.0,
centerTitle: true,
title: Text(
AppText.investmentConfirmationText,
style: GoogleFonts.dmSans(
color: const Color(0xFF272727),
fontSize: 20.sp,
fontWeight: FontWeight.w700,
),
),
),
body: Padding(
padding: const EdgeInsets.all(18.0),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(22.r),
color: Colors.transparent,
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.15),
spreadRadius: 2,
blurRadius: 10,
offset:
const Offset(0, 8), // changes position of shadow
),
],
),
child: TicketWidget(
height: 335.h,
isCornerRounded: true,
width: double.infinity,
color: AppColor.plainWhite,
child: Padding(
padding: const EdgeInsets.fromLTRB(20.0, 30, 20, 10),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
getIcon(type),
Gap(16.h),
TextWidget().text14W600(AppText.investment,
clr: AppColor.otpTextColor),
Gap(4.h),
TextWidget().text17W700("Name of investment",
clr: AppColor.otpTextColor),
Gap(
4.h,
),
TextWidget().text11W500('10/04/2024 22:04',
clr: AppColor.hintTextColor),
Gap(
16.h,
),
TextWidget().text20W900('+ SAR 100,000',
clr: AppColor.otpTextColor),
TextWidget().text13W500("+ \$100.00",
clr: AppColor.textLabelColor),
],
),
Gap(
35.h,
),
_buildBody(),
],
),
),
),
),
),
),
)
: Scaffold(
backgroundColor: AppColor.plainWhite,
appBar: AppBar(
backgroundColor: AppColor.plainWhite,
elevation: 0,
scrolledUnderElevation: 0.0,
centerTitle: true,
title: TextWidget().text20W700(AppText.walletDetailsTitle,
clr: AppColor.charcoalColor)),
body: Padding(
padding: const EdgeInsets.all(18.0),
child: Container(
width: 1.sw,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(22.r),
color: (type == 'Yield' || type == 'Refund')
? AppColor.plainWhite
: Colors.transparent,
boxShadow: [
BoxShadow(
color: AppColor.plainBlack.withOpacity(0.15),
spreadRadius: 2,
blurRadius: 10,
offset: const Offset(0, 8), // changes position of shadow
),
],
),
child: (type == 'Yield' || type == 'Refund')
? YieldDetailSection(
type: type,
)
: TicketWidget(
height: (type == 'Investment' ||
type == "confirm-investment")
? 320.h
: double.infinity,
isCornerRounded: true,
width: double.infinity,
color: Colors.white,
child: Padding(
padding: const EdgeInsets.fromLTRB(20.0, 30, 20, 10),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
getIcon(type),
Gap(16.h),
TextWidget().text14W600(
type == "confirm-investment"
? "Investment"
: type,
clr: AppColor.otpTextColor),
Gap(4.h),
(type == "confirm-investment" ||
type == 'Investment')
? TextWidget().text17W700(
"Name of investment",
clr: AppColor.otpTextColor)
: const SizedBox(),
Gap(4.h),
TextWidget().text11W500('10/04/2024 22:04',
clr: AppColor.hintTextColor),
Gap(16.h),
TextWidget().text20W900('+ SAR 100,000',
clr: AppColor.otpTextColor),
(type == "confirm-investment" ||
type == 'Investment')
? TextWidget().text12W500("+ \$100.00",
clr: AppColor.textLabelColor)
: const SizedBox(),
],
),
Gap(35.h),
_buildBody(),
],
),
),
),
),
),
);
}
Widget _buildBody() {
if (type == 'Yield') {
return const SizedBox();
} else if (type == 'Refund') {
return const SizedBox();
} else if (type == 'Investment' || type == "confirm-investment") {
return Container(
width: double.infinity,
decoration: const BoxDecoration(
border: Border(
bottom: BorderSide(
color: AppColor.plainWhite,
width: 1.0,
),
),
),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 15.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextWidget().text14W500(
AppText.paymentMethod,
clr: AppColor.portoflioCardTextColor,
),
SizedBox(
width: 180.w,
child: TextWidget().text14W600(
'Google/Apple Pay',
clr: AppColor.otpTextColor,
),
),
],
),
),
);
} else {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: ListView.builder(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: titles.length,
itemBuilder: (context, index) {
if (type == 'Deposit' && titles[index] == 'Status') {
return Container();
} else {
return Container(
width: double.infinity,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: (index != titles.length - 1)
? AppColor.plainBlack
: AppColor.plainWhite,
width: 1.0,
),
),
),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 15.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextWidget().text14W500(titles[index],
clr: AppColor.portoflioCardTextColor),
Expanded(
child: (titles[index] == 'Status')
? TextWidget().text14W700(values[index],
clr: AppColor.onHoldTextColor,
txtAlign: TextAlign.end)
: TextWidget().text14W600(values[index],
clr: AppColor.otpTextColor,
txtAlign: TextAlign.end)),
],
),
),
);
}
},
),
);
}
}
}

View File

@@ -1,187 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gap/gap.dart';
import 'package:tanami_app/core/routes/route_name.dart';
import 'package:tanami_app/core/routes/routes.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/core/styles/app_images.dart';
import 'package:tanami_app/core/styles/app_text.dart';
import 'package:tanami_app/shared/components/text_widget.dart';
import '../widgets/wallet_list_section.dart';
class WalletScreen extends StatelessWidget {
const WalletScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
elevation: 0,
scrolledUnderElevation: 0.0,
automaticallyImplyLeading: false,
toolbarHeight: 260.h,
titleSpacing: 22.w,
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget().text14W700(
AppText.walletTitle,
clr: AppColor.darkGreyColor,
),
Gap(4.h),
TextWidget().text28W700('SAR 178,000', clr: AppColor.otpTextColor),
Gap(80.h)
],
),
flexibleSpace: FlexibleSpaceBar(
background: Stack(
children: [
Image.asset(
AppImages.walletBg,
fit: BoxFit.fitWidth,
alignment: Alignment.topCenter,
),
Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0),
child: Container(
decoration: BoxDecoration(
color: AppColor.plainWhite.withOpacity(0.8),
borderRadius:
const BorderRadius.all(Radius.circular(20.0)),
),
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 20.0, vertical: 20.0),
child: IntrinsicHeight(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
GestureDetector(
onTap: () {
goRouter.pushNamed(RouteName.depositScreen);
},
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: AppColor.plainBlack,
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset(
AppImages.depositIcon,
height: 20.h,
),
),
),
TextWidget().text12W700(AppText.depositTitle,
clr: AppColor.textLabelColor),
],
),
),
const VerticalDivider(
color: AppColor.plainBlack,
width: 20.0,
),
GestureDetector(
onTap: () {
goRouter.pushNamed(RouteName.withdrawalScreen);
},
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: AppColor.plainBlack,
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset(
AppImages.withdrawIcon,
height: 20.h,
),
),
),
TextWidget().text12W700(AppText.withdrawText,
clr: AppColor.textLabelColor)
],
),
),
],
),
),
),
),
),
)
],
),
),
backgroundColor: Colors.transparent,
),
body: Padding(
padding: const EdgeInsets.fromLTRB(18.0, 10.0, 18.0, 0.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextWidget()
.text11W500(AppText.day, clr: AppColor.hintTextColor),
Row(
children: [
Container(
decoration: const BoxDecoration(
color: AppColor.fillColor,
borderRadius: BorderRadius.all(Radius.circular(12.0)),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset(
AppImages.walletSearchIcon,
height: 20.h,
),
),
),
SizedBox(
width: 5.w,
),
GestureDetector(
onTap: () {
goRouter.pushNamed(RouteName.filterScreen);
},
child: Container(
decoration: const BoxDecoration(
color: AppColor.fillColor,
borderRadius: BorderRadius.all(Radius.circular(12.0)),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset(
AppImages.walletFilterIcon,
height: 20.h,
),
),
),
),
],
),
],
),
Gap(10.h),
const WalletListSection(),
],
),
),
);
}
}

View File

@@ -47,40 +47,25 @@ class _WithdrawalScreenState extends State<WithdrawalScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 0.55.sw,
decoration: const BoxDecoration(
border: Border(
bottom: BorderSide(width: 1, color: Colors.grey))),
child: Row(
RichText(
text: TextSpan(
children: [
RichText(
text: TextSpan(
children: [
TextSpan(
text: '${AppText.balance}: ',
style: GoogleFonts.dmSans(
color: Colors.grey,
fontSize: 12.0,
fontWeight: FontWeight.bold,
),
),
TextSpan(
text: 'SAR 178,000',
style: GoogleFonts.dmSans(
color: Colors.black,
fontSize: 14.0,
fontWeight: FontWeight.bold,
),
),
],
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,
),
),
const Icon(
Icons.arrow_forward,
color: Colors.grey,
size: 15,
)
],
),
),
@@ -422,20 +407,20 @@ class _WithdrawalScreenState extends State<WithdrawalScreen> {
),
),
),
bottomNavigationBar: GestureDetector(
onTap: () {
goRouter.pushNamed(RouteName.withdrawalPreview);
},
child: Container(
margin: const EdgeInsets.all(10.0),
height: 65.h,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(22.r),
color: const Color(0xFF004717),
),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 20.0),
bottomNavigationBar: Padding(
padding: MediaQuery.of(context).viewInsets,
child: GestureDetector(
onTap: () {
goRouter.pushNamed(RouteName.withdrawalPreview);
},
child: Container(
margin: const EdgeInsets.all(10.0),
height: 65.h,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(22.r),
color: const Color(0xFF004717),
),
child: Center(
child: Text(
AppText.next,

View File

@@ -10,8 +10,9 @@ class ChangePasswordLayout extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Scaffold(
backgroundColor: AppColor.plainWhite,
bottomNavigationBar: RestorePasswordBottomSection(),
body: RestorePasswordForm());
backgroundColor: AppColor.plainWhite,
body: RestorePasswordForm(),
bottomNavigationBar: RestorePasswordBottomSection(),
);
}
}

View File

@@ -1,9 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart';
import '../../../../core/styles/app_color.dart';
import '../../../../core/styles/app_text.dart';
import '../../../../shared/components/appbar_widget.dart';
import '../bloc/change_password_bloc.dart';
import 'change_password_layout.dart';
@@ -14,9 +15,19 @@ class ChangePasswordScreen extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColor.plainWhite,
appBar: const AppBarWidget(
height: 75,
titleTxt: AppText.changePasswordText,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
scrolledUnderElevation: 0.0,
centerTitle: true,
title: Text(
AppText.changePasswordText,
style: GoogleFonts.dmSans(
color: const Color(0xFF272727),
fontSize: 20.sp,
fontWeight: FontWeight.w700,
),
),
),
resizeToAvoidBottomInset: false,
body: MultiBlocProvider(

View File

@@ -9,7 +9,6 @@ import '../../../../core/routes/routes.dart';
import '../../../../core/styles/app_color.dart';
import '../../../../core/styles/app_text.dart';
import '../../../../shared/components/button_widget.dart';
import '../../../../shared/components/text_widget.dart';
import '../bloc/change_password_bloc.dart';
import '../bloc/change_password_event.dart';
import '../bloc/change_password_state.dart';
@@ -87,13 +86,15 @@ class RestorePasswordBottomSection extends StatelessWidget {
},
),
const Gap(5),
ButtonWidget().textBtn(
function: () {
goRouter.pop();
},
text: TextWidget().text14W700(AppText.backText,
clr: AppColor.textLabelColor,
textDecoration: TextDecoration.underline)),
ButtonWidget().textBorderBtn(
clr: Colors.white,
borderClr: AppColor.txtBorderColor,
function: () {
goRouter.pop();
},
text: AppText.cancelText,
),
const Gap(10),
],
);
}

View File

@@ -69,13 +69,14 @@ class RestorePasswordForm extends StatelessWidget {
Align(
alignment: Alignment.topRight,
child: ButtonWidget().textBtn(
function: () {
goRouter.pushNamed(
RouteName.forgotPasswordPhoneVerificationScreen);
},
text: TextWidget().text15W400(AppText.forgorPassword,
clr: AppColor.forgotPassButtonColor,
textDecoration: TextDecoration.underline)),
function: () {
goRouter.pushNamed(
RouteName.forgotPasswordPhoneVerificationScreen);
},
text: TextWidget().text15W400(AppText.forgotPassword,
clr: AppColor.forgotPassButtonColor,
textDecoration: TextDecoration.underline),
),
),
const Gap(20),
],

View File

@@ -38,7 +38,7 @@ class BottomSection extends StatelessWidget {
goRouter
.pushNamed(RouteName.forgotPasswordPhoneVerificationScreen);
},
text: TextWidget().text15W400(AppText.forgorPassword,
text: TextWidget().text15W400(AppText.forgotPassword,
clr: AppColor.forgotPassButtonColor,
textDecoration: TextDecoration.underline)),
),