home api
This commit is contained in:
@@ -17,6 +17,7 @@ class MyTabBar extends StatelessWidget {
|
||||
color: const Color(0xff6C0000),
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
),
|
||||
isScrollable: false,
|
||||
dividerColor: Colors.transparent,
|
||||
labelStyle: TextStyle(
|
||||
fontSize: 18.sp,
|
||||
@@ -38,4 +39,4 @@ class MyTabBar extends StatelessWidget {
|
||||
]),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,4 +71,7 @@ class ApiUrls {
|
||||
"${base}get-swing-trade-recommendations";
|
||||
static String getMultibaggerRecommendations =
|
||||
"${base}get-multibagger-recommendations";
|
||||
|
||||
//Home
|
||||
static String getHome = "${base}home-page-details";
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ class ContactUsController extends GetxController {
|
||||
//contact us page controller
|
||||
RxList<File?> attachmentFileList = [File("")].obs;
|
||||
RxList<String> attachmentPathNameList = [""].obs;
|
||||
RxList<dynamic> contactUsDetailsChatContent = [].obs;
|
||||
RxList<dynamic> contactUsDetailsChatContent = [].obs;
|
||||
//contact us details page controller
|
||||
RxList<File?> attachmentFileDetailsList = [File("")].obs;
|
||||
RxList<String> attachmentPathNameDetailsList = [""].obs;
|
||||
@@ -35,8 +35,5 @@ class ContactUsController extends GetxController {
|
||||
return DateFormat("dd MMM yyyy, hh:mm a").format(dateTime.toLocal());
|
||||
}
|
||||
|
||||
|
||||
RxList<dynamic> contactUsDetailsChatContent = [].obs;
|
||||
// RxList<dynamic> contactUsDetailsChatContent = [].obs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
436
lib/model/HomeModel/home_model.dart
Normal file
436
lib/model/HomeModel/home_model.dart
Normal file
@@ -0,0 +1,436 @@
|
||||
class HomeModel {
|
||||
String? status;
|
||||
int? statusCode;
|
||||
String? message;
|
||||
Data? data;
|
||||
|
||||
HomeModel({this.status, this.statusCode, this.message, this.data});
|
||||
|
||||
HomeModel.fromJson(Map<String, dynamic> json) {
|
||||
status = json['status'];
|
||||
statusCode = json['status_code'];
|
||||
message = json['message'];
|
||||
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['status'] = this.status;
|
||||
data['status_code'] = this.statusCode;
|
||||
data['message'] = this.message;
|
||||
if (this.data != null) {
|
||||
data['data'] = this.data!.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Data {
|
||||
List<ExploreTheUnseenActiveCalls>? exploreTheUnseenActiveCalls;
|
||||
List<ExploreTheUnseenExitedCalls>? exploreTheUnseenExitedCalls;
|
||||
UserData? userData;
|
||||
List<Products>? products;
|
||||
ContentByteVideo? contentByteVideo;
|
||||
|
||||
Data(
|
||||
{this.exploreTheUnseenActiveCalls,
|
||||
this.exploreTheUnseenExitedCalls,
|
||||
this.userData,
|
||||
this.products,
|
||||
this.contentByteVideo});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
if (json['explore_the_unseen_active_calls'] != null) {
|
||||
exploreTheUnseenActiveCalls = <ExploreTheUnseenActiveCalls>[];
|
||||
json['explore_the_unseen_active_calls'].forEach((v) {
|
||||
exploreTheUnseenActiveCalls!
|
||||
.add(new ExploreTheUnseenActiveCalls.fromJson(v));
|
||||
});
|
||||
}
|
||||
if (json['explore_the_unseen_exited_calls'] != null) {
|
||||
exploreTheUnseenExitedCalls = <ExploreTheUnseenExitedCalls>[];
|
||||
json['explore_the_unseen_exited_calls'].forEach((v) {
|
||||
exploreTheUnseenExitedCalls!
|
||||
.add(new ExploreTheUnseenExitedCalls.fromJson(v));
|
||||
});
|
||||
}
|
||||
userData = json['user_data'] != null
|
||||
? new UserData.fromJson(json['user_data'])
|
||||
: null;
|
||||
if (json['products'] != null) {
|
||||
products = <Products>[];
|
||||
json['products'].forEach((v) {
|
||||
products!.add(new Products.fromJson(v));
|
||||
});
|
||||
}
|
||||
contentByteVideo = json['content_byte_video'] != null
|
||||
? new ContentByteVideo.fromJson(json['content_byte_video'])
|
||||
: null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
if (this.exploreTheUnseenActiveCalls != null) {
|
||||
data['explore_the_unseen_active_calls'] =
|
||||
this.exploreTheUnseenActiveCalls!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
if (this.exploreTheUnseenExitedCalls != null) {
|
||||
data['explore_the_unseen_exited_calls'] =
|
||||
this.exploreTheUnseenExitedCalls!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
if (this.userData != null) {
|
||||
data['user_data'] = this.userData!.toJson();
|
||||
}
|
||||
if (this.products != null) {
|
||||
data['products'] = this.products!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
if (this.contentByteVideo != null) {
|
||||
data['content_byte_video'] = this.contentByteVideo!.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class ExploreTheUnseenActiveCalls {
|
||||
int? id;
|
||||
int? manageProductXid;
|
||||
int? recommendationActionsXid;
|
||||
String? stockName;
|
||||
String? instrumentKey;
|
||||
String? stockImage;
|
||||
String? qty;
|
||||
String? duration;
|
||||
String? currentPrice;
|
||||
String? buyPrice;
|
||||
String? targetPrice;
|
||||
String? stopLoss;
|
||||
int? isSendRecommendationNow;
|
||||
String? scheduleDateTime;
|
||||
String? createdAt;
|
||||
ProductData? productData;
|
||||
ActionData? actionData;
|
||||
|
||||
ExploreTheUnseenActiveCalls(
|
||||
{this.id,
|
||||
this.manageProductXid,
|
||||
this.recommendationActionsXid,
|
||||
this.stockName,
|
||||
this.instrumentKey,
|
||||
this.stockImage,
|
||||
this.qty,
|
||||
this.duration,
|
||||
this.currentPrice,
|
||||
this.buyPrice,
|
||||
this.targetPrice,
|
||||
this.stopLoss,
|
||||
this.isSendRecommendationNow,
|
||||
this.scheduleDateTime,
|
||||
this.createdAt,
|
||||
this.productData,
|
||||
this.actionData});
|
||||
|
||||
ExploreTheUnseenActiveCalls.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
manageProductXid = json['manage_product_xid'];
|
||||
recommendationActionsXid = json['recommendation_actions_xid'];
|
||||
stockName = json['stock_name'];
|
||||
instrumentKey = json['instrument_key'];
|
||||
stockImage = json['stock_image'];
|
||||
qty = json['qty'];
|
||||
duration = json['duration'];
|
||||
currentPrice = json['current_price'];
|
||||
buyPrice = json['buy_price'];
|
||||
targetPrice = json['target_price'];
|
||||
stopLoss = json['stop_loss'];
|
||||
isSendRecommendationNow = json['is_send_recommendation_now'];
|
||||
scheduleDateTime = json['schedule_date_time'];
|
||||
createdAt = json['created_at'];
|
||||
productData = json['product_data'] != null
|
||||
? new ProductData.fromJson(json['product_data'])
|
||||
: null;
|
||||
actionData = json['action_data'] != null
|
||||
? new ActionData.fromJson(json['action_data'])
|
||||
: null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['manage_product_xid'] = this.manageProductXid;
|
||||
data['recommendation_actions_xid'] = this.recommendationActionsXid;
|
||||
data['stock_name'] = this.stockName;
|
||||
data['instrument_key'] = this.instrumentKey;
|
||||
data['stock_image'] = this.stockImage;
|
||||
data['qty'] = this.qty;
|
||||
data['duration'] = this.duration;
|
||||
data['current_price'] = this.currentPrice;
|
||||
data['buy_price'] = this.buyPrice;
|
||||
data['target_price'] = this.targetPrice;
|
||||
data['stop_loss'] = this.stopLoss;
|
||||
data['is_send_recommendation_now'] = this.isSendRecommendationNow;
|
||||
data['schedule_date_time'] = this.scheduleDateTime;
|
||||
data['created_at'] = this.createdAt;
|
||||
if (this.productData != null) {
|
||||
data['product_data'] = this.productData!.toJson();
|
||||
}
|
||||
if (this.actionData != null) {
|
||||
data['action_data'] = this.actionData!.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class ExploreTheUnseenExitedCalls {
|
||||
int? id;
|
||||
int? manageProductXid;
|
||||
int? recommendationActionsXid;
|
||||
String? stockName;
|
||||
String? instrumentKey;
|
||||
String? stockImage;
|
||||
String? qty;
|
||||
String? duration;
|
||||
String? currentPrice;
|
||||
String? buyPrice;
|
||||
String? targetPrice;
|
||||
String? stopLoss;
|
||||
int? isSendRecommendationNow;
|
||||
String? scheduleDateTime;
|
||||
String? createdAt;
|
||||
ProductData? productData;
|
||||
ActionData? actionData;
|
||||
|
||||
ExploreTheUnseenExitedCalls(
|
||||
{this.id,
|
||||
this.manageProductXid,
|
||||
this.recommendationActionsXid,
|
||||
this.stockName,
|
||||
this.instrumentKey,
|
||||
this.stockImage,
|
||||
this.qty,
|
||||
this.duration,
|
||||
this.currentPrice,
|
||||
this.buyPrice,
|
||||
this.targetPrice,
|
||||
this.stopLoss,
|
||||
this.isSendRecommendationNow,
|
||||
this.scheduleDateTime,
|
||||
this.createdAt,
|
||||
this.productData,
|
||||
this.actionData});
|
||||
|
||||
ExploreTheUnseenExitedCalls.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
manageProductXid = json['manage_product_xid'];
|
||||
recommendationActionsXid = json['recommendation_actions_xid'];
|
||||
stockName = json['stock_name'];
|
||||
instrumentKey = json['instrument_key'];
|
||||
stockImage = json['stock_image'];
|
||||
qty = json['qty'];
|
||||
duration = json['duration'];
|
||||
currentPrice = json['current_price'];
|
||||
buyPrice = json['buy_price'];
|
||||
targetPrice = json['target_price'];
|
||||
stopLoss = json['stop_loss'];
|
||||
isSendRecommendationNow = json['is_send_recommendation_now'];
|
||||
scheduleDateTime = json['schedule_date_time'];
|
||||
createdAt = json['created_at'];
|
||||
productData = json['product_data'] != null
|
||||
? new ProductData.fromJson(json['product_data'])
|
||||
: null;
|
||||
actionData = json['action_data'] != null
|
||||
? new ActionData.fromJson(json['action_data'])
|
||||
: null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['manage_product_xid'] = this.manageProductXid;
|
||||
data['recommendation_actions_xid'] = this.recommendationActionsXid;
|
||||
data['stock_name'] = this.stockName;
|
||||
data['instrument_key'] = this.instrumentKey;
|
||||
data['stock_image'] = this.stockImage;
|
||||
data['qty'] = this.qty;
|
||||
data['duration'] = this.duration;
|
||||
data['current_price'] = this.currentPrice;
|
||||
data['buy_price'] = this.buyPrice;
|
||||
data['target_price'] = this.targetPrice;
|
||||
data['stop_loss'] = this.stopLoss;
|
||||
data['is_send_recommendation_now'] = this.isSendRecommendationNow;
|
||||
data['schedule_date_time'] = this.scheduleDateTime;
|
||||
data['created_at'] = this.createdAt;
|
||||
if (this.productData != null) {
|
||||
data['product_data'] = this.productData!.toJson();
|
||||
}
|
||||
if (this.actionData != null) {
|
||||
data['action_data'] = this.actionData!.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class ProductData {
|
||||
int? id;
|
||||
String? productName;
|
||||
int? isActive;
|
||||
String? createdAt;
|
||||
|
||||
ProductData({this.id, this.productName, this.isActive, this.createdAt});
|
||||
|
||||
ProductData.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
productName = json['product_name'];
|
||||
isActive = json['is_active'];
|
||||
createdAt = json['created_at'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['product_name'] = this.productName;
|
||||
data['is_active'] = this.isActive;
|
||||
data['created_at'] = this.createdAt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class ActionData {
|
||||
int? id;
|
||||
String? name;
|
||||
int? isActive;
|
||||
String? createdAt;
|
||||
|
||||
ActionData({this.id, this.name, this.isActive, this.createdAt});
|
||||
|
||||
ActionData.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
name = json['name'];
|
||||
isActive = json['is_active'];
|
||||
createdAt = json['created_at'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['name'] = this.name;
|
||||
data['is_active'] = this.isActive;
|
||||
data['created_at'] = this.createdAt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class UserData {
|
||||
int? id;
|
||||
String? firstName;
|
||||
String? lastName;
|
||||
String? userName;
|
||||
String? profilePhoto;
|
||||
String? isActive;
|
||||
String? createdAt;
|
||||
|
||||
UserData(
|
||||
{this.id,
|
||||
this.firstName,
|
||||
this.lastName,
|
||||
this.userName,
|
||||
this.profilePhoto,
|
||||
this.isActive,
|
||||
this.createdAt});
|
||||
|
||||
UserData.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
firstName = json['first_name'];
|
||||
lastName = json['last_name'];
|
||||
userName = json['user_name'];
|
||||
profilePhoto = json['profile_photo'];
|
||||
isActive = json['is_active'];
|
||||
createdAt = json['created_at'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['first_name'] = this.firstName;
|
||||
data['last_name'] = this.lastName;
|
||||
data['user_name'] = this.userName;
|
||||
data['profile_photo'] = this.profilePhoto;
|
||||
data['is_active'] = this.isActive;
|
||||
data['created_at'] = this.createdAt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Products {
|
||||
int? id;
|
||||
String? title;
|
||||
String? createdAt;
|
||||
|
||||
Products({this.id, this.title, this.createdAt});
|
||||
|
||||
Products.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
title = json['title'];
|
||||
createdAt = json['created_at'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['title'] = this.title;
|
||||
data['created_at'] = this.createdAt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class ContentByteVideo {
|
||||
int? id;
|
||||
String? contentType;
|
||||
String? title;
|
||||
String? description;
|
||||
String? tags;
|
||||
String? file;
|
||||
int? categoryId;
|
||||
String? image;
|
||||
String? isActive;
|
||||
String? createdAt;
|
||||
|
||||
ContentByteVideo(
|
||||
{this.id,
|
||||
this.contentType,
|
||||
this.title,
|
||||
this.description,
|
||||
this.tags,
|
||||
this.file,
|
||||
this.categoryId,
|
||||
this.image,
|
||||
this.isActive,
|
||||
this.createdAt});
|
||||
|
||||
ContentByteVideo.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
contentType = json['content_type'];
|
||||
title = json['title'];
|
||||
description = json['description'];
|
||||
tags = json['tags'];
|
||||
file = json['file'];
|
||||
categoryId = json['category_id'];
|
||||
image = json['image'];
|
||||
isActive = json['is_active'];
|
||||
createdAt = json['created_at'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['content_type'] = this.contentType;
|
||||
data['title'] = this.title;
|
||||
data['description'] = this.description;
|
||||
data['tags'] = this.tags;
|
||||
data['file'] = this.file;
|
||||
data['category_id'] = this.categoryId;
|
||||
data['image'] = this.image;
|
||||
data['is_active'] = this.isActive;
|
||||
data['created_at'] = this.createdAt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:traderscircuit/Utils/Common/CommonAppbar.dart';
|
||||
import 'package:traderscircuit/Utils/Common/CommonBottomNavigation.dart';
|
||||
import 'package:traderscircuit/Utils/Common/CommonTabBar.dart';
|
||||
import 'package:traderscircuit/Utils/Common/comonGlassmorphicContainer.dart';
|
||||
import 'package:traderscircuit/Utils/Common/sized_box.dart';
|
||||
import 'package:traderscircuit/Utils/text.dart';
|
||||
import 'package:traderscircuit/resources/routes/route_name.dart';
|
||||
import 'package:traderscircuit/view/MainScreen/MainScreen.dart';
|
||||
import 'package:traderscircuit/view/Sidemenu/Sidemenu.dart';
|
||||
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||
|
||||
class ExploreUnseen extends StatefulWidget {
|
||||
@@ -32,25 +26,6 @@ class _ExploreUnseenState extends State<ExploreUnseen> {
|
||||
extendBody: true,
|
||||
appBar: CommonAppbar(titleTxt: ''),
|
||||
|
||||
// AppBar(
|
||||
// scrolledUnderElevation: 0.0,
|
||||
// backgroundColor: Colors.black,
|
||||
// elevation: 0,
|
||||
// automaticallyImplyLeading: false,
|
||||
// titleSpacing: 0,
|
||||
// leading: InkWell(
|
||||
// onTap: () {
|
||||
// _scaffoldKey1.currentState?.openDrawer();
|
||||
// },
|
||||
// child: Center(
|
||||
// child: Image.asset(
|
||||
// 'assets/images/png/menu.png',
|
||||
// height: 15.h,
|
||||
// width: 20.w,
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
body: Stack(children: [
|
||||
CommonBlurLeft(),
|
||||
CommonBlurRight(),
|
||||
@@ -83,84 +58,6 @@ class _ExploreUnseenState extends State<ExploreUnseen> {
|
||||
amount: '₹ 453 - ₹234',
|
||||
pdfname: 'Download Pdf'),
|
||||
sizedBoxHeight(30.h),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text22W600('Content Bytes'),
|
||||
sizedBoxHeight(8.w),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 240.w,
|
||||
child: text16W400_DADADA('The Beauty and Power of Video')),
|
||||
Spacer(),
|
||||
Container(
|
||||
height: 35.h,
|
||||
width: 105.w,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFF3A3A3A).withOpacity(0.6),
|
||||
borderRadius: BorderRadius.circular(5.r),
|
||||
border: Border.all(
|
||||
color: Color(0xFF3A3A3A),
|
||||
)),
|
||||
child: Center(child: text16W500('View More')),
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
commonGlassContainer(
|
||||
borderradius: 8,
|
||||
width: double.infinity,
|
||||
height: 330.h,
|
||||
customWidget: Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
height: 200.h,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/Rectangle 17934.png'))),
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/svg/gridicons_play.svg',
|
||||
height: 56.h,
|
||||
width: 56.w,
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 23.r,
|
||||
backgroundImage: AssetImage(
|
||||
'assets/images/png/Ellipse 1494.png'),
|
||||
),
|
||||
sizedBoxWidth(10.w),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 250.w,
|
||||
child:
|
||||
text18W500('Week of 21st February 2024')),
|
||||
// sizedBoxHeight(10.h),
|
||||
text12W400_979797('20k views . 2 days ago'),
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
))
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -10,11 +10,13 @@ import 'package:traderscircuit/Utils/Common/CommonTabBar.dart';
|
||||
import 'package:traderscircuit/Utils/Common/comonGlassmorphicContainer.dart';
|
||||
import 'package:traderscircuit/Utils/Common/sized_box.dart';
|
||||
import 'package:traderscircuit/Utils/text.dart';
|
||||
import 'package:traderscircuit/model/HomeModel/home_model.dart';
|
||||
import 'package:traderscircuit/resources/routes/route_name.dart';
|
||||
import 'package:traderscircuit/view/MainScreen/MainScreen.dart';
|
||||
import 'package:traderscircuit/view/Sidemenu/ContentByte/PlayerWidget.dart';
|
||||
import 'package:traderscircuit/view/Sidemenu/Sidemenu.dart';
|
||||
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||
import 'package:traderscircuit/view_model/HomeApi/home_api.dart';
|
||||
|
||||
import '../../view_model/ProfileAPI/GetProfileApi.dart';
|
||||
|
||||
@@ -28,12 +30,19 @@ class HomeScreen extends StatefulWidget {
|
||||
class _HomeScreenState extends State<HomeScreen> {
|
||||
GlobalKey<ScaffoldState> _scaffoldKey1 = GlobalKey<ScaffoldState>();
|
||||
RxString userName = "User".obs;
|
||||
HomeModel homeModel = HomeModel();
|
||||
|
||||
RxBool isApiCalling = true.obs;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
GetProfile().GetProfileAPI().then((value) {
|
||||
userName.value = ProfileObj!.data!.userName ?? "User";
|
||||
});
|
||||
HomeApi().getHomeData().then((value) {
|
||||
homeModel = HomeModel.fromJson(value.data);
|
||||
});
|
||||
isApiCalling.value = false;
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@@ -87,126 +96,251 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
||||
child: ListView(
|
||||
physics: const BouncingScrollPhysics(),
|
||||
children: [
|
||||
sizedBoxHeight(20.h),
|
||||
Obx(
|
||||
() => Text(
|
||||
"Welcome $userName",
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 24.sp,
|
||||
fontFamily: 'hiragino',
|
||||
fontWeight: FontWeight.w500),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(25.h),
|
||||
SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: Row(
|
||||
child: isApiCalling.value
|
||||
? Center(
|
||||
child: CircularProgressIndicator(),
|
||||
)
|
||||
: ListView(
|
||||
physics: const BouncingScrollPhysics(),
|
||||
children: [
|
||||
commoncontainer(
|
||||
width: 195.w,
|
||||
text: 'NIFTY',
|
||||
amount: '22,286.95',
|
||||
rate: '+304.15 (+1.38%)'),
|
||||
sizedBoxWidth(10.w),
|
||||
commoncontainer(
|
||||
width: 240.w,
|
||||
text: 'BANKNIFTY',
|
||||
amount: '22,286.95',
|
||||
rate: '+896.10 (+1.94%)'),
|
||||
],
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 1.h,
|
||||
color: const Color(0xFF3A3A3A),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
text22W500('View our products'),
|
||||
sizedBoxHeight(30.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
ProductWidget(
|
||||
text: 'Options', subtext: 'Recommendation'),
|
||||
ProductWidget(
|
||||
text: 'Multibagger', subtext: 'Recommendation')
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(15.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
ProductWidget(
|
||||
text: 'Swing Trade', subtext: 'Recommendation'),
|
||||
ProductWidget(
|
||||
text: 'OP + MB + ST', subtext: 'Recommendation'),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(25.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
SvgPicture.asset('assets/images/svg/Vector (2).svg'),
|
||||
sizedBoxWidth(10.w),
|
||||
text18W500('UNLOCK NOW!'),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(25.h),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 1.h,
|
||||
color: const Color(0xFF3A3A3A),
|
||||
),
|
||||
sizedBoxHeight(25.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
text22W600('Explore The Unseen'),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
Get.toNamed(RouteName.exploreUnseen);
|
||||
},
|
||||
child: Container(
|
||||
height: 35.h,
|
||||
width: 105.w,
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0xFF3A3A3A).withOpacity(0.6),
|
||||
borderRadius: BorderRadius.circular(5.r),
|
||||
border: Border.all(
|
||||
color: const Color(0xFF3A3A3A),
|
||||
)),
|
||||
child: Center(child: text16W500('View More')),
|
||||
sizedBoxHeight(20.h),
|
||||
Obx(
|
||||
() => Text(
|
||||
"Welcome $userName",
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 24.sp,
|
||||
fontFamily: 'hiragino',
|
||||
fontWeight: FontWeight.w500),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(35.h),
|
||||
DefaultTabController(
|
||||
length: 2,
|
||||
child: Column(
|
||||
children: [
|
||||
MyTabBar(),
|
||||
SizedBox(
|
||||
height: 700.h,
|
||||
child: TabBarView(
|
||||
sizedBoxHeight(25.h),
|
||||
SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: Row(
|
||||
children: [
|
||||
ActiveCallsTab(),
|
||||
ExitedCallsTab(),
|
||||
commoncontainer(
|
||||
width: 195.w,
|
||||
text: 'NIFTY',
|
||||
amount: '22,286.95',
|
||||
rate: '+304.15 (+1.38%)'),
|
||||
sizedBoxWidth(10.w),
|
||||
commoncontainer(
|
||||
width: 240.w,
|
||||
text: 'BANKNIFTY',
|
||||
amount: '22,286.95',
|
||||
rate: '+896.10 (+1.94%)'),
|
||||
],
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 1.h,
|
||||
color: const Color(0xFF3A3A3A),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
text22W500('View our products'),
|
||||
sizedBoxHeight(30.h),
|
||||
SizedBox(
|
||||
height: 210,
|
||||
child: GridView.builder(
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
gridDelegate:
|
||||
const SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount:
|
||||
2, // number of items in each row
|
||||
mainAxisSpacing: 8.0, // spacing between rows
|
||||
crossAxisSpacing:
|
||||
8.0, // spacing between columns
|
||||
childAspectRatio: 2.2,
|
||||
),
|
||||
itemCount: homeModel.data!.products!.length,
|
||||
itemBuilder: (context, index) {
|
||||
return ProductWidget(
|
||||
text: homeModel.data!.products!
|
||||
.elementAt(index)
|
||||
.title!,
|
||||
subtext: "recommendation");
|
||||
},
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(25.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
SvgPicture.asset(
|
||||
'assets/images/svg/Vector (2).svg'),
|
||||
sizedBoxWidth(10.w),
|
||||
text18W500('UNLOCK NOW!'),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(25.h),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 1.h,
|
||||
color: const Color(0xFF3A3A3A),
|
||||
),
|
||||
sizedBoxHeight(25.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
text22W600('Explore The Unseen'),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
Get.toNamed(RouteName.exploreUnseen);
|
||||
},
|
||||
child: Container(
|
||||
height: 35.h,
|
||||
width: 105.w,
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0xFF3A3A3A)
|
||||
.withOpacity(0.6),
|
||||
borderRadius: BorderRadius.circular(5.r),
|
||||
border: Border.all(
|
||||
color: const Color(0xFF3A3A3A),
|
||||
)),
|
||||
child: Center(child: text16W500('View More')),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(35.h),
|
||||
DefaultTabController(
|
||||
length: 2,
|
||||
child: Column(
|
||||
children: [
|
||||
MyTabBar(),
|
||||
SizedBox(
|
||||
height: 250.h,
|
||||
child: TabBarView(
|
||||
children: [
|
||||
ActiveCallsTab(),
|
||||
ExitedCallsTab(),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text22W600('Content Bytes'),
|
||||
sizedBoxHeight(8.w),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 240.w,
|
||||
child: text16W400_DADADA(
|
||||
'The Beauty and Power of Video')),
|
||||
// sizedBoxWidth(10.w),
|
||||
const Spacer(),
|
||||
Container(
|
||||
height: 35.h,
|
||||
width: 105.w,
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0xFF3A3A3A)
|
||||
.withOpacity(0.6),
|
||||
borderRadius: BorderRadius.circular(5.r),
|
||||
border: Border.all(
|
||||
color: const Color(0xFF3A3A3A),
|
||||
),
|
||||
),
|
||||
child: Center(
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Get.toNamed(RouteName.contentbytes);
|
||||
},
|
||||
child: text16W500('View More'),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
commonGlassContainer(
|
||||
borderradius: 8,
|
||||
width: double.infinity,
|
||||
height: 330.h,
|
||||
customWidget: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 10.h, horizontal: 10.w),
|
||||
child: Column(
|
||||
children: [
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Get.to(() => const PlayerWidget(),
|
||||
arguments: {
|
||||
"video_url": "",
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 200.h,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius:
|
||||
BorderRadius.circular(8.r),
|
||||
image: DecorationImage(
|
||||
image: NetworkImage(homeModel
|
||||
.data!
|
||||
.contentByteVideo!
|
||||
.image ??
|
||||
""),
|
||||
),
|
||||
),
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/svg/gridicons_play.svg',
|
||||
height: 56.h,
|
||||
width: 56.w,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.center,
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 23.r,
|
||||
backgroundImage: NetworkImage(
|
||||
homeModel
|
||||
.data!
|
||||
.contentByteVideo!
|
||||
.title ??
|
||||
""),
|
||||
),
|
||||
sizedBoxWidth(10.w),
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
text18W500(homeModel
|
||||
.data!
|
||||
.contentByteVideo!
|
||||
.title ??
|
||||
""),
|
||||
// sizedBoxHeight(10.h),
|
||||
text12W400_979797(
|
||||
'20k views . 2 days ago'),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
))
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
])
|
||||
],
|
||||
@@ -253,156 +387,77 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
});
|
||||
return exitApp ?? false;
|
||||
}
|
||||
}
|
||||
|
||||
Widget ActiveCallsTab() {
|
||||
return Column(
|
||||
children: [
|
||||
sizedBoxHeight(30.h),
|
||||
cardcallWidget(
|
||||
text: 'Trident Ltd', amount: '₹ 453 - ₹234', pdfname: 'Download Pdf'),
|
||||
sizedBoxHeight(30.h),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text22W600('Content Bytes'),
|
||||
sizedBoxHeight(8.w),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 240.w,
|
||||
child: text16W400_DADADA('The Beauty and Power of Video')),
|
||||
// sizedBoxWidth(10.w),
|
||||
const Spacer(),
|
||||
Container(
|
||||
height: 35.h,
|
||||
width: 105.w,
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0xFF3A3A3A).withOpacity(0.6),
|
||||
borderRadius: BorderRadius.circular(5.r),
|
||||
border: Border.all(
|
||||
color: const Color(0xFF3A3A3A),
|
||||
),
|
||||
),
|
||||
child: Center(
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Get.toNamed(RouteName.contentbytes);
|
||||
},
|
||||
child: text16W500('View More'),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
commonGlassContainer(
|
||||
borderradius: 8,
|
||||
width: double.infinity,
|
||||
height: 330.h,
|
||||
customWidget: Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w),
|
||||
child: Column(
|
||||
children: [
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Get.to(() => const PlayerWidget(), arguments: {
|
||||
"video_url": "",
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 200.h,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
image: const DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/Rectangle 17934.png'))),
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/svg/gridicons_play.svg',
|
||||
height: 56.h,
|
||||
width: 56.w,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 23.r,
|
||||
backgroundImage: const AssetImage(
|
||||
'assets/images/png/Ellipse 1494.png'),
|
||||
),
|
||||
sizedBoxWidth(10.w),
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text18W500('Week of 21st February 2024'),
|
||||
// sizedBoxHeight(10.h),
|
||||
text12W400_979797('20k views . 2 days ago'),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
))
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget ExitedCallsTab() {
|
||||
List<Map<String, String>> cardcall = [
|
||||
{
|
||||
'text': 'Trident Ltd',
|
||||
'amount': '₹ 453 - ₹234',
|
||||
'pdfname': 'Download Pdf',
|
||||
},
|
||||
{
|
||||
'text': 'Trident Ltd',
|
||||
'amount': '₹ 453 - ₹234',
|
||||
'pdfname': 'Download Pdf',
|
||||
},
|
||||
{
|
||||
'text': 'Trident Ltd',
|
||||
'amount': '₹ 453 - ₹234',
|
||||
'pdfname': 'Download Pdf',
|
||||
},
|
||||
];
|
||||
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
Widget ActiveCallsTab() {
|
||||
return Column(
|
||||
children: [
|
||||
sizedBoxHeight(30.h),
|
||||
Column(
|
||||
children: List.generate(cardcall.length, (index) {
|
||||
return Column(
|
||||
children: [
|
||||
cardcallWidget(
|
||||
text: cardcall[index]['text']!,
|
||||
amount: cardcall[index]['amount']!,
|
||||
pdfname: cardcall[index]['pdfname']!),
|
||||
sizedBoxHeight(20.h)
|
||||
],
|
||||
);
|
||||
}),
|
||||
),
|
||||
cardcallWidget(
|
||||
action: homeModel.data!.exploreTheUnseenActiveCalls!.first
|
||||
.recommendationActionsXid ==
|
||||
1
|
||||
? "Buy"
|
||||
: homeModel.data!.exploreTheUnseenActiveCalls!.first
|
||||
.recommendationActionsXid ==
|
||||
2
|
||||
? "Sell"
|
||||
: homeModel.data!.exploreTheUnseenActiveCalls!.first
|
||||
.recommendationActionsXid ==
|
||||
3
|
||||
? "Hold"
|
||||
: homeModel.data!.exploreTheUnseenActiveCalls!.first
|
||||
.recommendationActionsXid ==
|
||||
4
|
||||
? "Exit"
|
||||
: "",
|
||||
text: homeModel.data!.exploreTheUnseenActiveCalls!.first.stockName!,
|
||||
amount:
|
||||
"₹ ${homeModel.data!.exploreTheUnseenActiveCalls!.first.buyPrice!}",
|
||||
pdfname: 'Download Pdf'),
|
||||
sizedBoxHeight(30.h),
|
||||
],
|
||||
),
|
||||
);
|
||||
);
|
||||
}
|
||||
|
||||
Widget ExitedCallsTab() {
|
||||
return Column(
|
||||
children: [
|
||||
sizedBoxHeight(30.h),
|
||||
homeModel.data!.exploreTheUnseenExitedCalls!.isEmpty ||
|
||||
homeModel.data!.exploreTheUnseenExitedCalls == null
|
||||
? text14W300("No Data")
|
||||
: Column(
|
||||
children: List.generate(
|
||||
homeModel.data!.exploreTheUnseenExitedCalls!.length,
|
||||
(index) {
|
||||
return Column(
|
||||
children: [
|
||||
cardcallWidget(
|
||||
action: "Hold",
|
||||
text: homeModel.data!.exploreTheUnseenExitedCalls!
|
||||
.elementAt(index)
|
||||
.stockName ??
|
||||
"",
|
||||
amount: homeModel.data!.exploreTheUnseenExitedCalls!
|
||||
.elementAt(index)
|
||||
.buyPrice ??
|
||||
"",
|
||||
pdfname: "Download Pdf"),
|
||||
sizedBoxHeight(20.h)
|
||||
],
|
||||
);
|
||||
}),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Widget cardcallWidget(
|
||||
{required String text, required String amount, required String pdfname}) {
|
||||
{required String text,
|
||||
required String amount,
|
||||
required String pdfname,
|
||||
required String action}) {
|
||||
return commonGlassContainer(
|
||||
width: double.infinity,
|
||||
height: 176.h,
|
||||
@@ -449,9 +504,15 @@ Widget cardcallWidget(
|
||||
height: 25.h,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(4.r),
|
||||
color: const Color(0xFFFFAD31),
|
||||
color: action == "Buy"
|
||||
? Colors.green
|
||||
: action == "Sell"
|
||||
? Colors.red
|
||||
: action == "Hold"
|
||||
? const Color(0xFFFFAD31)
|
||||
: Colors.white,
|
||||
),
|
||||
child: Center(child: text16W400_1B1B1B('Hold')),
|
||||
child: Center(child: text16W400_1B1B1B(action)),
|
||||
)
|
||||
],
|
||||
),
|
||||
|
||||
25
lib/view_model/HomeApi/home_api.dart
Normal file
25
lib/view_model/HomeApi/home_api.dart
Normal file
@@ -0,0 +1,25 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:traderscircuit/Utils/api_urls.dart';
|
||||
import 'package:traderscircuit/Utils/base_manager.dart';
|
||||
import 'package:traderscircuit/data/network/network_api_services.dart';
|
||||
|
||||
class HomeApi {
|
||||
Future<ResponseData<dynamic>> getHomeData() async {
|
||||
final response = await NetworkApiServices().getApi(
|
||||
ApiUrls.getHome,
|
||||
);
|
||||
log(response.data.toString());
|
||||
if (response.status == ResponseStatus.SUCCESS) {
|
||||
Map<String, dynamic> responseData =
|
||||
Map<String, dynamic>.from(response.data);
|
||||
if (responseData['status'] == "success") {
|
||||
return response;
|
||||
} else {
|
||||
return ResponseData<dynamic>(
|
||||
responseData['message'], ResponseStatus.FAILED);
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user