Merge branch 'main' of https://github.com/WDI-Ideas/Tanami_App into jayeshjain25

This commit is contained in:
jayesh
2024-05-31 17:01:53 +05:30
15 changed files with 404 additions and 8 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -77,6 +77,7 @@ class AppText {
static const String currentval = "Current valuation";
static const String totalreturn = "Total return";
static const String disttodate = "Distributions to date";
static const String includeddocs = "Included Documents";
//Dialog
static const String exitText = "Exit";

View File

@@ -1,4 +1,9 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart';
class AcademyScreen extends StatefulWidget {
const AcademyScreen({super.key});
@@ -8,8 +13,223 @@ class AcademyScreen extends StatefulWidget {
}
class _AcademyScreenState extends State<AcademyScreen> {
List data = [
{
'img_path': 'assets/images/academy_screen/bg1.jpg',
'date': 'July / 10 / 2025',
'title': 'Article ',
'videos': '3',
'desc':
'Forem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur tempus urna at turpis condimentum lobortis.'
},
{
'img_path': 'assets/images/academy_screen/bg2.jpg',
'date': 'July / 10 / 2025',
'title': 'Article ',
'videos': '3',
'desc':
'Forem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur tempus urna at turpis condimentum lobortis.'
},
{
'img_path': 'assets/images/academy_screen/bg3.jpg',
'date': 'July / 10 / 2025',
'videos': '3',
'title': 'Article ',
'desc':
'Forem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur tempus urna at turpis condimentum lobortis.'
},
{
'img_path': 'assets/images/academy_screen/bg4.jpg',
'date': 'July / 10 / 2025',
'videos': '3',
'title': 'Article ',
'desc':
'Forem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur tempus urna at turpis condimentum lobortis.',
},
{
'img_path': 'assets/images/academy_screen/bg5.jpg',
'date': 'July / 10 / 2025',
'videos': '3',
'title': 'Article ',
'desc':
'Forem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur tempus urna at turpis condimentum lobortis.',
},
{
'img_path': 'assets/images/academy_screen/bg4.jpg',
'date': 'July / 10 / 2025',
'videos': '3',
'title': 'Article ',
'desc':
'Forem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur tempus urna at turpis condimentum lobortis.',
},
{
'img_path': 'assets/images/academy_screen/bg4.jpg',
'date': 'July / 10 / 2025',
'videos': '3',
'title': 'Article ',
'desc':
'Forem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur tempus urna at turpis condimentum lobortis.',
},
{
'img_path': 'assets/images/academy_screen/bg4.jpg',
'date': 'July / 10 / 2025',
'videos': '3',
'title': 'Article ',
'desc':
'Forem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur tempus urna at turpis condimentum lobortis.',
},
];
@override
Widget build(BuildContext context) {
return Scaffold(body: Text('Academy'),);
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
scrolledUnderElevation: 0,
automaticallyImplyLeading: false,
title: Text(
'Academy',
style: GoogleFonts.dmSans(
color: Color(0xFF272727),
fontSize: 22.sp,
fontWeight: FontWeight.w700,
),
),
titleSpacing: 16,
),
body: ListView.builder(
itemCount: data.length,
itemBuilder: (context, index) {
return Padding(
padding:
const EdgeInsets.symmetric(vertical: 10.0, horizontal: 16.0),
child: Container(
height: 140.h,
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(20.0)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.15),
spreadRadius: 2,
blurRadius: 10,
offset: Offset(0, 3), // changes position of shadow
),
],
),
child: Row(
children: [
Container(
height: 140.h,
width: 164.w,
decoration: const BoxDecoration(
color: Color(0xFFF8F8F8),
borderRadius: BorderRadius.all(
Radius.circular(20.0),
),
),
child: Stack(
children: [
ClipRRect(
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(20.0),
bottomLeft: Radius.circular(20.0),
),
child: Image.asset(
data[index]['img_path'],
fit: BoxFit.cover,
height: double.infinity,
alignment: Alignment.topCenter,
),
),
Positioned(
bottom: 0.0,
child: ClipRRect(
borderRadius: const BorderRadius.only(
bottomLeft: Radius.circular(20.0),
),
child: Image.asset(
'assets/images/academy_screen/dark_overlay.png',
),
),
),
Positioned(
bottom: 8.0, left: 12.0,
// alignment: Alignment.bottomLeft,
child: Row(
children: [
Image.asset(
'assets/images/academy_screen/video.png',
height: 15.sp,
),
SizedBox(
width: 5.w,
),
Text(
'${data[index]['videos']} videos',
style: GoogleFonts.dmSans(
color: Color(0xFFD8D8D8),
fontSize: 12.sp,
fontWeight: FontWeight.w700,
),
),
],
),
),
],
),
),
Padding(
padding: const EdgeInsets.symmetric(
vertical: 20.0, horizontal: 16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
data[index]['date'],
style: GoogleFonts.dmSans(
color: Color(0xFF8D8D8D),
fontSize: 11.sp,
fontWeight: FontWeight.w500,
),
),
SizedBox(
height: 4.h,
),
Text(
data[index]['title'],
style: GoogleFonts.dmSans(
color: Colors.black,
fontSize: 17.sp,
fontWeight: FontWeight.w700,
),
),
SizedBox(
height: 12.h,
),
SizedBox(
width: 158.w,
child: Text(
data[index]['desc'],
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: GoogleFonts.dmSans(
color: Color(0xFF8D8D8D),
fontSize: 11.sp,
fontWeight: FontWeight.w500,
),
),
),
],
),
)
],
),
),
);
}),
);
}
}
}

View File

@@ -1,3 +1,4 @@
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart';
@@ -11,6 +12,16 @@ class DetailsScreen extends StatefulWidget {
}
class _DetailsScreenState extends State<DetailsScreen> {
int _current = 0;
final CarouselController _controller = CarouselController();
final List imgList = [
{'id': 1, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
{'id': 2, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
{'id': 3, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
{'id': 4, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
{'id': 5, 'img_path': 'assets/images/portfolio_screen/detailsbg.png'},
];
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -54,13 +65,58 @@ class _DetailsScreenState extends State<DetailsScreen> {
topLeft: Radius.circular(20.0),
topRight: Radius.circular(20.0),
),
child: Image.asset(
'assets/images/portfolio_screen/detailsbg.png',
fit: BoxFit.cover,
width: double.infinity,
alignment: Alignment.topCenter,
child: CarouselSlider(
items: imgList
.map(
(item) => Image.asset(
item['img_path'],
fit: BoxFit.cover,
width: double.infinity,
alignment: Alignment.topCenter,
),
)
.toList(),
carouselController: _controller,
options: CarouselOptions(
scrollPhysics: const BouncingScrollPhysics(),
autoPlay: true,
aspectRatio: 2,
viewportFraction: 1,
onPageChanged: (index, reason) {
setState(() {
_current = index;
});
}),
),
),
Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.only(bottom: 17.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children:
imgList.asMap().entries.map((entry) {
return GestureDetector(
onTap: () =>
_controller.animateToPage(entry.key),
child: Container(
width: 20.w,
height: 7.h,
margin: const EdgeInsets.symmetric(
horizontal: 3.0),
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(10),
color: (_current == entry.key)
? Colors.white
: Colors.grey,
),
),
);
}).toList(),
),
)),
Positioned(
top: 20,
left: 20,
@@ -304,6 +360,114 @@ class _DetailsScreenState extends State<DetailsScreen> {
],
),
),
SizedBox(
height: 20.h,
),
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: const BorderRadius.all(Radius.circular(20.0)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.15),
spreadRadius: 2,
blurRadius: 10,
offset: Offset(0, 3), // changes position of shadow
),
],
),
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
AppText.includeddocs,
style: GoogleFonts.dmSans(
color: Colors.black,
fontSize: 15.sp,
fontWeight: FontWeight.w700,
),
),
SizedBox(
height: 16.h,
),
GridView.count(
shrinkWrap: true,
childAspectRatio: 1.7,
mainAxisSpacing: 10.h,
crossAxisSpacing: 10.w,
crossAxisCount: 2, // Number of columns
children: List.generate(
6,
(index) {
return Center(
child: Container(
decoration: BoxDecoration(
color: Color(0xFFF4F4F4),
borderRadius:
BorderRadius.all(Radius.circular(10.0)),
),
padding: EdgeInsets.all(20.0),
child: Column(
children: [
Row(
children: [
Image.asset(
'assets/images/portfolio_screen/document.png',
height: 16.sp,
),
SizedBox(
width: 7.w,
),
Text(
"Filename.pdf",
style: GoogleFonts.dmSans(
color: Colors.black,
fontSize: 12.sp,
fontWeight: FontWeight.w700,
),
),
],
),
SizedBox(
height: 14.h,
),
Row(
crossAxisAlignment:
CrossAxisAlignment.end,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
"512 Mb",
style: GoogleFonts.dmSans(
color: Color(0xFF535353),
fontSize: 12.sp,
fontWeight: FontWeight.w700,
),
),
SizedBox(
width: 7.w,
),
Image.asset(
'assets/images/portfolio_screen/download.png',
height: 20.sp,
),
],
),
],
),
),
);
},
),
)
],
),
),
),
],
),
),

View File

@@ -45,7 +45,8 @@ class BottomSection extends StatelessWidget {
successToastMessage(context, "login successful !");
goRouter.pop();
goRouter.goNamed(RouteName.biometricScreen);
// goRouter.goNamed(RouteName.biometricScreen);
goRouter.goNamed(RouteName.mainScreen);
} else if (state is LoginFailure) {
goRouter.pop();
errorToastMessage(

View File

@@ -105,6 +105,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.2.0"
carousel_slider:
dependency: "direct main"
description:
name: carousel_slider
sha256: "9c695cc963bf1d04a47bd6021f68befce8970bcd61d24938e1fb0918cf5d9c42"
url: "https://pub.dev"
source: hosted
version: "4.2.1"
characters:
dependency: transitive
description:

View File

@@ -76,6 +76,7 @@ dependencies:
#OTP Autofill
sms_autofill: ^2.3.1
carousel_slider: ^4.2.1
dev_dependencies:
flutter_test:
@@ -99,6 +100,7 @@ flutter:
- assets/images/bottom_bar/active/
- assets/images/bottom_bar/inactive/
- assets/images/portfolio_screen/
- assets/images/academy_screen/
- assets/images/biometric_screen/
- assets/images/biometric_screen/png/
- assets/images/biometric_screen/svg/