search completed
This commit is contained in:
BIN
assets/images/png/search.png
Normal file
BIN
assets/images/png/search.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
@@ -22,6 +22,7 @@ class CustomTextFormField extends StatefulWidget {
|
|||||||
this.onTap,
|
this.onTap,
|
||||||
this.textCapV,
|
this.textCapV,
|
||||||
this.suffixIcon,
|
this.suffixIcon,
|
||||||
|
this.autofocus,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
final dynamic validator;
|
final dynamic validator;
|
||||||
@@ -41,6 +42,7 @@ class CustomTextFormField extends StatefulWidget {
|
|||||||
final VoidCallback? onTap;
|
final VoidCallback? onTap;
|
||||||
final TextCapitalization? textCapV;
|
final TextCapitalization? textCapV;
|
||||||
final Widget? suffixIcon;
|
final Widget? suffixIcon;
|
||||||
|
final bool? autofocus;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<CustomTextFormField> createState() => _CustomTextFormFieldState();
|
State<CustomTextFormField> createState() => _CustomTextFormFieldState();
|
||||||
@@ -84,6 +86,7 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
|
autofocus: widget.autofocus!,
|
||||||
textAlignVertical: TextAlignVertical.center,
|
textAlignVertical: TextAlignVertical.center,
|
||||||
cursorColor: Color(0xff4A73FB),
|
cursorColor: Color(0xff4A73FB),
|
||||||
initialValue: widget.value,
|
initialValue: widget.value,
|
||||||
|
|||||||
@@ -91,4 +91,7 @@ class ApiUrls {
|
|||||||
|
|
||||||
//setting
|
//setting
|
||||||
static String setting = "${base}update-notification";
|
static String setting = "${base}update-notification";
|
||||||
|
|
||||||
|
//search
|
||||||
|
static String searchData = "${base}search-stock";
|
||||||
}
|
}
|
||||||
|
|||||||
64
lib/model/HomeModel/search_model.dart
Normal file
64
lib/model/HomeModel/search_model.dart
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
class SearchModel {
|
||||||
|
String? status;
|
||||||
|
int? statusCode;
|
||||||
|
String? message;
|
||||||
|
List<Data>? data;
|
||||||
|
|
||||||
|
SearchModel({this.status, this.statusCode, this.message, this.data});
|
||||||
|
|
||||||
|
SearchModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
status = json['status'];
|
||||||
|
statusCode = json['status_code'];
|
||||||
|
message = json['message'];
|
||||||
|
if (json['data'] != null) {
|
||||||
|
data = <Data>[];
|
||||||
|
json['data'].forEach((v) {
|
||||||
|
data!.add(new Data.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Data {
|
||||||
|
int? id;
|
||||||
|
String? name;
|
||||||
|
String? instrumentKey;
|
||||||
|
String? tradingSymbol;
|
||||||
|
int? isActive;
|
||||||
|
|
||||||
|
Data(
|
||||||
|
{this.id,
|
||||||
|
this.name,
|
||||||
|
this.instrumentKey,
|
||||||
|
this.tradingSymbol,
|
||||||
|
this.isActive});
|
||||||
|
|
||||||
|
Data.fromJson(Map<String, dynamic> json) {
|
||||||
|
id = json['id'];
|
||||||
|
name = json['name'];
|
||||||
|
instrumentKey = json['instrument_key'];
|
||||||
|
tradingSymbol = json['trading_symbol'];
|
||||||
|
isActive = json['is_active'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['id'] = this.id;
|
||||||
|
data['name'] = this.name;
|
||||||
|
data['instrument_key'] = this.instrumentKey;
|
||||||
|
data['trading_symbol'] = this.tradingSymbol;
|
||||||
|
data['is_active'] = this.isActive;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -61,4 +61,7 @@ class RouteName {
|
|||||||
|
|
||||||
//option chain
|
//option chain
|
||||||
static const String optionChain = '/optionChain';
|
static const String optionChain = '/optionChain';
|
||||||
|
|
||||||
|
//search
|
||||||
|
static const String search = '/search';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:traderscircuit/Utils/Common/noInternet.dart';
|
|||||||
import 'package:traderscircuit/model/StockDetailsModel/stock_details_model.dart';
|
import 'package:traderscircuit/model/StockDetailsModel/stock_details_model.dart';
|
||||||
import 'package:traderscircuit/resources/routes/route_name.dart';
|
import 'package:traderscircuit/resources/routes/route_name.dart';
|
||||||
import 'package:traderscircuit/view/MainScreen/ExploreUnseen.dart';
|
import 'package:traderscircuit/view/MainScreen/ExploreUnseen.dart';
|
||||||
|
import 'package:traderscircuit/view/MainScreen/stockDetails/Search.dart';
|
||||||
import 'package:traderscircuit/view/MainScreen/stockDetails/option_chain_screen.dart';
|
import 'package:traderscircuit/view/MainScreen/stockDetails/option_chain_screen.dart';
|
||||||
import 'package:traderscircuit/view/MainScreen/stockDetails/stock_details_screen.dart';
|
import 'package:traderscircuit/view/MainScreen/stockDetails/stock_details_screen.dart';
|
||||||
import 'package:traderscircuit/view/Sidemenu/AboutUs.dart';
|
import 'package:traderscircuit/view/Sidemenu/AboutUs.dart';
|
||||||
@@ -203,6 +204,12 @@ class AppRoutes {
|
|||||||
GetPage(
|
GetPage(
|
||||||
name: RouteName.optionChain,
|
name: RouteName.optionChain,
|
||||||
page: () => const OptionChainScreen(),
|
page: () => const OptionChainScreen(),
|
||||||
)
|
),
|
||||||
|
|
||||||
|
//search
|
||||||
|
GetPage(
|
||||||
|
name: RouteName.search,
|
||||||
|
page: () => const Search(),
|
||||||
|
),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'dart:developer';
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:flutter_html/flutter_html.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:gap/gap.dart';
|
import 'package:gap/gap.dart';
|
||||||
@@ -24,10 +25,10 @@ import 'package:traderscircuit/view/MainScreen/ExploreUnseen.dart';
|
|||||||
import 'package:traderscircuit/view/MainScreen/MainScreen.dart';
|
import 'package:traderscircuit/view/MainScreen/MainScreen.dart';
|
||||||
import 'package:traderscircuit/view/Sidemenu/ContentByte/PlayerWidget.dart';
|
import 'package:traderscircuit/view/Sidemenu/ContentByte/PlayerWidget.dart';
|
||||||
import 'package:traderscircuit/view/Sidemenu/Sidemenu.dart';
|
import 'package:traderscircuit/view/Sidemenu/Sidemenu.dart';
|
||||||
|
import 'package:traderscircuit/view/Sidemenu/webview_subscription.dart';
|
||||||
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||||
import 'package:traderscircuit/view_model/HomeApi/home_api.dart';
|
import 'package:traderscircuit/view_model/HomeApi/home_api.dart';
|
||||||
|
|
||||||
import '../../Utils/Common/CustomTextFormField.dart';
|
|
||||||
import '../../view_model/ProfileAPI/GetProfileApi.dart';
|
import '../../view_model/ProfileAPI/GetProfileApi.dart';
|
||||||
|
|
||||||
class HomeScreen extends StatefulWidget {
|
class HomeScreen extends StatefulWidget {
|
||||||
@@ -89,11 +90,41 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
drawer: Container(child: const SideMenu()),
|
drawer: Container(child: const SideMenu()),
|
||||||
extendBody: true,
|
extendBody: true,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
|
toolbarHeight: 70.h,
|
||||||
scrolledUnderElevation: 0.0,
|
scrolledUnderElevation: 0.0,
|
||||||
backgroundColor: Colors.black,
|
backgroundColor: Colors.black,
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
automaticallyImplyLeading: false,
|
automaticallyImplyLeading: false,
|
||||||
titleSpacing: 0,
|
titleSpacing: 0,
|
||||||
|
centerTitle: true,
|
||||||
|
title: GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
Get.toNamed(RouteName.search);
|
||||||
|
},
|
||||||
|
child: commonGlassContainer(
|
||||||
|
width: 250,
|
||||||
|
height: 50,
|
||||||
|
borderradius: 8,
|
||||||
|
customWidget: Center(
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
width: 10.w,
|
||||||
|
),
|
||||||
|
Icon(
|
||||||
|
Icons.search,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 15.w,
|
||||||
|
),
|
||||||
|
text20W400("Search"),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
leading: InkWell(
|
leading: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
_scaffoldKey1.currentState?.openDrawer();
|
_scaffoldKey1.currentState?.openDrawer();
|
||||||
@@ -114,7 +145,7 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.only(right: 14.w),
|
padding: EdgeInsets.only(right: 14.w),
|
||||||
child: SvgPicture.asset('assets/images/svg/Group 1897.svg')),
|
child: SvgPicture.asset('assets/images/svg/Group 1897.svg')),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
body: Obx(
|
body: Obx(
|
||||||
@@ -135,19 +166,6 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
: ListView(
|
: ListView(
|
||||||
physics: const BouncingScrollPhysics(),
|
physics: const BouncingScrollPhysics(),
|
||||||
children: [
|
children: [
|
||||||
sizedBoxHeight(15.h),
|
|
||||||
CustomTextFormField1(
|
|
||||||
hintText: 'Search',
|
|
||||||
leadingIcon: SizedBox(
|
|
||||||
height: 20,
|
|
||||||
width: 20,
|
|
||||||
child: Center(
|
|
||||||
child: SvgPicture.asset(
|
|
||||||
'assets/images/svg/search-svgrepo-com.svg',
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sizedBoxHeight(20.h),
|
sizedBoxHeight(20.h),
|
||||||
Text(
|
Text(
|
||||||
"Welcome $userName",
|
"Welcome $userName",
|
||||||
@@ -157,6 +175,9 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
fontFamily: 'hiragino',
|
fontFamily: 'hiragino',
|
||||||
fontWeight: FontWeight.w500),
|
fontWeight: FontWeight.w500),
|
||||||
),
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 10,
|
||||||
|
),
|
||||||
!homeModel.data!.isUpstoxTokenRefreshed!
|
!homeModel.data!.isUpstoxTokenRefreshed!
|
||||||
? const SizedBox()
|
? const SizedBox()
|
||||||
: sizedBoxHeight(25.h),
|
: sizedBoxHeight(25.h),
|
||||||
@@ -261,10 +282,19 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
'assets/images/svg/Vector (2).svg'),
|
'assets/images/svg/Vector (2).svg'),
|
||||||
sizedBoxWidth(10.w),
|
sizedBoxWidth(10.w),
|
||||||
InkWell(
|
ProfileObj!.data!.isSubscriptionTaken == true
|
||||||
|
? SizedBox()
|
||||||
|
: InkWell(
|
||||||
child: text18W500('UNLOCK NOW!'),
|
child: text18W500('UNLOCK NOW!'),
|
||||||
onTap: () {
|
onTap: () async {
|
||||||
throw Exception();
|
SharedPreferences prefs =
|
||||||
|
await SharedPreferences
|
||||||
|
.getInstance();
|
||||||
|
|
||||||
|
Get.to(WebViewSubscription(
|
||||||
|
token: prefs
|
||||||
|
.getString('accessToken')
|
||||||
|
.toString()));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -777,16 +807,16 @@ Widget commoncontainer({
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w),
|
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 6.w),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
text14W400_979797(text),
|
text14W400_979797(text),
|
||||||
sizedBoxWidth(8.w),
|
sizedBoxWidth(7.w),
|
||||||
text16W600(amount),
|
text16W600(amount),
|
||||||
sizedBoxWidth(8.w),
|
sizedBoxWidth(7.w),
|
||||||
rate.contains("-")
|
rate.contains("-")
|
||||||
? SvgPicture.asset(
|
? SvgPicture.asset(
|
||||||
'assets/images/svg/Line 587.svg',
|
'assets/images/svg/Line 587.svg',
|
||||||
|
|||||||
@@ -255,21 +255,23 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
text22W600("No Data Available !"),
|
text22W600("No Data Available !"),
|
||||||
],
|
],
|
||||||
))
|
))
|
||||||
: ListView.builder(
|
: productsController.selectedIndex.value == 0
|
||||||
itemCount: callRecommendationsModel.data!.activeCalls!.length,
|
? ProfileObj!.data!.isSubscriptionTaken == true &&
|
||||||
|
ProfileObj!.data!.subscriptionData!.productData!
|
||||||
|
.productName! ==
|
||||||
|
"Swing Trade"
|
||||||
|
? ListView.builder(
|
||||||
|
itemCount:
|
||||||
|
callRecommendationsModel.data!.activeCalls!.length,
|
||||||
itemBuilder: (ctx, index) {
|
itemBuilder: (ctx, index) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.only(top: 20.h, bottom: 5.h),
|
padding: EdgeInsets.only(top: 20.h, bottom: 5.h),
|
||||||
child: productsController.selectedIndex.value == 0
|
child: cardSwingWidget(
|
||||||
? ProfileObj!.data!.subscriptionData!.productData!
|
|
||||||
.productName! ==
|
|
||||||
"Swing Trade"
|
|
||||||
? cardSwingWidget(
|
|
||||||
instrumentName: callRecommendationsModel
|
instrumentName: callRecommendationsModel
|
||||||
.data!.activeCalls![index].instrumentKey!,
|
.data!.activeCalls![index].instrumentKey!,
|
||||||
pdfLink: "",
|
pdfLink: "",
|
||||||
image: callRecommendationsModel
|
// image: callRecommendationsModel
|
||||||
.data!.activeCalls![index].stockImage!,
|
// .data!.activeCalls![index].stockImage!,
|
||||||
text: callRecommendationsModel
|
text: callRecommendationsModel
|
||||||
.data!.activeCalls![index].stockName!,
|
.data!.activeCalls![index].stockName!,
|
||||||
amount:
|
amount:
|
||||||
@@ -282,17 +284,59 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
'${callRecommendationsModel.data!.activeCalls![index].duration}',
|
'${callRecommendationsModel.data!.activeCalls![index].duration}',
|
||||||
action: callRecommendationsModel
|
action: callRecommendationsModel
|
||||||
.data!.activeCalls![index].actionData!.name!,
|
.data!.activeCalls![index].actionData!.name!,
|
||||||
|
));
|
||||||
|
})
|
||||||
|
: Center(
|
||||||
|
child: commonGlassContainer(
|
||||||
|
width: double.infinity,
|
||||||
|
height: 150,
|
||||||
|
borderradius: 2,
|
||||||
|
customWidget: Center(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
text18W500("Please Subscribe to Swing Trade"),
|
||||||
|
SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: CommonBtn(
|
||||||
|
text: "Unlock Now",
|
||||||
|
onTap: () async {
|
||||||
|
SharedPreferences prefs =
|
||||||
|
await SharedPreferences.getInstance();
|
||||||
|
|
||||||
|
Get.to(WebViewSubscription(
|
||||||
|
token: prefs
|
||||||
|
.getString('accessToken')
|
||||||
|
.toString()));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
: Text("Please Subscribe to Swing trade")
|
|
||||||
: productsController.selectedIndex.value == 1
|
: productsController.selectedIndex.value == 1
|
||||||
? ProfileObj!.data!.subscriptionData!.productData!
|
? ProfileObj!.data!.isSubscriptionTaken == true &&
|
||||||
|
ProfileObj!.data!.subscriptionData!.productData!
|
||||||
.productName! ==
|
.productName! ==
|
||||||
"MultiBagger"
|
"MultiBagger"
|
||||||
? cardMultibaggerWidget(
|
? ListView.builder(
|
||||||
|
itemCount:
|
||||||
|
callRecommendationsModel.data!.activeCalls!.length,
|
||||||
|
itemBuilder: (ctx, index) {
|
||||||
|
return Padding(
|
||||||
|
padding: EdgeInsets.only(top: 20.h, bottom: 5.h),
|
||||||
|
child: cardMultibaggerWidget(
|
||||||
instrumentName: callRecommendationsModel
|
instrumentName: callRecommendationsModel
|
||||||
.data!.activeCalls![index].instrumentKey!,
|
.data!.activeCalls![index].instrumentKey!,
|
||||||
image: callRecommendationsModel
|
// image: callRecommendationsModel
|
||||||
.data!.activeCalls![index].stockImage!,
|
// .data!.activeCalls![index].stockImage!,
|
||||||
action: callRecommendationsModel.data!
|
action: callRecommendationsModel.data!
|
||||||
.activeCalls![index].actionData!.name!,
|
.activeCalls![index].actionData!.name!,
|
||||||
text: callRecommendationsModel
|
text: callRecommendationsModel
|
||||||
@@ -310,7 +354,8 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
pdfname: "Download Pdf",
|
pdfname: "Download Pdf",
|
||||||
pdfLink: callRecommendationsModel
|
pdfLink: callRecommendationsModel
|
||||||
.data!.activeCalls![index].docs!,
|
.data!.activeCalls![index].docs!,
|
||||||
)
|
));
|
||||||
|
})
|
||||||
: Center(
|
: Center(
|
||||||
child: commonGlassContainer(
|
child: commonGlassContainer(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
@@ -322,8 +367,7 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
text18W500(
|
text18W500("Please Subscribe to Multibagger"),
|
||||||
"Please Subscribe to Multibagger"),
|
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
@@ -333,8 +377,7 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
text: "Unlock Now",
|
text: "Unlock Now",
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
SharedPreferences prefs =
|
SharedPreferences prefs =
|
||||||
await SharedPreferences
|
await SharedPreferences.getInstance();
|
||||||
.getInstance();
|
|
||||||
|
|
||||||
Get.to(WebViewSubscription(
|
Get.to(WebViewSubscription(
|
||||||
token: prefs
|
token: prefs
|
||||||
@@ -348,16 +391,22 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
// Text("Please Subscribe to Multibagger")
|
: ProfileObj!.data!.isSubscriptionTaken == true &&
|
||||||
: ProfileObj!.data!.subscriptionData!.productData!
|
ProfileObj!.data!.subscriptionData!.productData!
|
||||||
.productName! ==
|
.productName! ==
|
||||||
"Options"
|
"Options"
|
||||||
? cardOptionWidget(
|
? ListView.builder(
|
||||||
|
itemCount:
|
||||||
|
callRecommendationsModel.data!.activeCalls!.length,
|
||||||
|
itemBuilder: (ctx, index) {
|
||||||
|
return Padding(
|
||||||
|
padding: EdgeInsets.only(top: 20.h, bottom: 5.h),
|
||||||
|
child: cardOptionWidget(
|
||||||
instrumentName: callRecommendationsModel
|
instrumentName: callRecommendationsModel
|
||||||
.data!.activeCalls![index].instrumentKey!,
|
.data!.activeCalls![index].instrumentKey!,
|
||||||
pdfLink: "",
|
pdfLink: "",
|
||||||
image: callRecommendationsModel
|
// image: callRecommendationsModel
|
||||||
.data!.activeCalls![index].stockImage!,
|
// .data!.activeCalls![index].stockImage!,
|
||||||
action: callRecommendationsModel.data!
|
action: callRecommendationsModel.data!
|
||||||
.activeCalls![index].actionData!.name!,
|
.activeCalls![index].actionData!.name!,
|
||||||
text: callRecommendationsModel
|
text: callRecommendationsModel
|
||||||
@@ -374,7 +423,8 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
"₹ ${callRecommendationsModel.data!.activeCalls![index].targetPrice}",
|
"₹ ${callRecommendationsModel.data!.activeCalls![index].targetPrice}",
|
||||||
stoploss:
|
stoploss:
|
||||||
"₹ ${callRecommendationsModel.data!.activeCalls![index].stopLoss}",
|
"₹ ${callRecommendationsModel.data!.activeCalls![index].stopLoss}",
|
||||||
)
|
));
|
||||||
|
})
|
||||||
: Center(
|
: Center(
|
||||||
child: commonGlassContainer(
|
child: commonGlassContainer(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
@@ -386,8 +436,7 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
text18W500(
|
text18W500("Please Subscribe to Options"),
|
||||||
"Please Subscribe to Options"),
|
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
@@ -397,8 +446,7 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
text: "Unlock Now",
|
text: "Unlock Now",
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
SharedPreferences prefs =
|
SharedPreferences prefs =
|
||||||
await SharedPreferences
|
await SharedPreferences.getInstance();
|
||||||
.getInstance();
|
|
||||||
|
|
||||||
Get.to(WebViewSubscription(
|
Get.to(WebViewSubscription(
|
||||||
token: prefs
|
token: prefs
|
||||||
@@ -411,9 +459,8 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _unlockbottomsheet() {
|
void _unlockbottomsheet() {
|
||||||
@@ -472,8 +519,8 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
.data!.exitedCalls![index].instrumentKey!,
|
.data!.exitedCalls![index].instrumentKey!,
|
||||||
pdfLink: callRecommendationsModel
|
pdfLink: callRecommendationsModel
|
||||||
.data!.exitedCalls![index].docs!,
|
.data!.exitedCalls![index].docs!,
|
||||||
image: callRecommendationsModel
|
// image: callRecommendationsModel
|
||||||
.data!.exitedCalls![index].stockImage!,
|
// .data!.exitedCalls![index].stockImage!,
|
||||||
text: callRecommendationsModel
|
text: callRecommendationsModel
|
||||||
.data!.exitedCalls![index].stockName!,
|
.data!.exitedCalls![index].stockName!,
|
||||||
amount: '₹ 196.50 - ₹ 197',
|
amount: '₹ 196.50 - ₹ 197',
|
||||||
@@ -490,8 +537,8 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
? cardMultibaggerWidget(
|
? cardMultibaggerWidget(
|
||||||
instrumentName: callRecommendationsModel
|
instrumentName: callRecommendationsModel
|
||||||
.data!.exitedCalls![index].instrumentKey!,
|
.data!.exitedCalls![index].instrumentKey!,
|
||||||
image: callRecommendationsModel
|
// image: callRecommendationsModel
|
||||||
.data!.exitedCalls![index].stockImage!,
|
// .data!.exitedCalls![index].stockImage!,
|
||||||
action: callRecommendationsModel
|
action: callRecommendationsModel
|
||||||
.data!.exitedCalls![index].actionData!.name!,
|
.data!.exitedCalls![index].actionData!.name!,
|
||||||
text: callRecommendationsModel
|
text: callRecommendationsModel
|
||||||
@@ -515,8 +562,8 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
.data!.exitedCalls![index].instrumentKey!,
|
.data!.exitedCalls![index].instrumentKey!,
|
||||||
pdfLink: callRecommendationsModel
|
pdfLink: callRecommendationsModel
|
||||||
.data!.exitedCalls![index].docs!,
|
.data!.exitedCalls![index].docs!,
|
||||||
image: callRecommendationsModel
|
// image: callRecommendationsModel
|
||||||
.data!.exitedCalls![index].stockImage!,
|
// .data!.exitedCalls![index].stockImage!,
|
||||||
action: callRecommendationsModel
|
action: callRecommendationsModel
|
||||||
.data!.exitedCalls![index].actionData!.name!,
|
.data!.exitedCalls![index].actionData!.name!,
|
||||||
text: callRecommendationsModel
|
text: callRecommendationsModel
|
||||||
@@ -548,7 +595,7 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
required String stoploss,
|
required String stoploss,
|
||||||
required String action,
|
required String action,
|
||||||
required String pdfLink,
|
required String pdfLink,
|
||||||
required String image,
|
// required String image,
|
||||||
required String instrumentName,
|
required String instrumentName,
|
||||||
}) {
|
}) {
|
||||||
ContactUsController contactUsController = Get.put(ContactUsController());
|
ContactUsController contactUsController = Get.put(ContactUsController());
|
||||||
@@ -577,11 +624,11 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
Row(
|
Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
CachedNetworkImage(
|
// CachedNetworkImage(
|
||||||
imageUrl: image,
|
// imageUrl: image,
|
||||||
width: 78.29,
|
// width: 78.29,
|
||||||
height: 31,
|
// height: 31,
|
||||||
),
|
// ),
|
||||||
const Gap(10),
|
const Gap(10),
|
||||||
text16W700(text),
|
text16W700(text),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
@@ -722,7 +769,7 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
required String pdfname,
|
required String pdfname,
|
||||||
required String action,
|
required String action,
|
||||||
required String pdfLink,
|
required String pdfLink,
|
||||||
required String image,
|
// required String image,
|
||||||
required String instrumentName,
|
required String instrumentName,
|
||||||
}) {
|
}) {
|
||||||
ContactUsController contactUsController = Get.put(ContactUsController());
|
ContactUsController contactUsController = Get.put(ContactUsController());
|
||||||
@@ -751,11 +798,11 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
Row(
|
Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
CachedNetworkImage(
|
// CachedNetworkImage(
|
||||||
imageUrl: image,
|
// imageUrl: image,
|
||||||
width: 78.29,
|
// width: 78.29,
|
||||||
height: 31,
|
// height: 31,
|
||||||
),
|
// ),
|
||||||
const Gap(10),
|
const Gap(10),
|
||||||
text16W700(text),
|
text16W700(text),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
@@ -898,7 +945,7 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget cardSwingWidget({
|
Widget cardSwingWidget({
|
||||||
required String image,
|
// required String image,
|
||||||
required String text,
|
required String text,
|
||||||
required String amount,
|
required String amount,
|
||||||
required String targetamount,
|
required String targetamount,
|
||||||
@@ -933,11 +980,11 @@ class _ShortTradeState extends State<ShortTrade> {
|
|||||||
Row(
|
Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
CachedNetworkImage(
|
// CachedNetworkImage(
|
||||||
imageUrl: image,
|
// imageUrl: image,
|
||||||
width: 78.29,
|
// width: 78.29,
|
||||||
height: 31,
|
// height: 31,
|
||||||
),
|
// ),
|
||||||
const Gap(10),
|
const Gap(10),
|
||||||
Container(
|
Container(
|
||||||
width: 2,
|
width: 2,
|
||||||
|
|||||||
201
lib/view/MainScreen/stockDetails/Search.dart
Normal file
201
lib/view/MainScreen/stockDetails/Search.dart
Normal file
@@ -0,0 +1,201 @@
|
|||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_html/flutter_html.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:traderscircuit/Utils/Common/CommonAppbar.dart';
|
||||||
|
import 'package:traderscircuit/Utils/Common/CustomTextFormField.dart';
|
||||||
|
import 'package:traderscircuit/Utils/text.dart';
|
||||||
|
import 'package:traderscircuit/model/HomeModel/search_model.dart';
|
||||||
|
import 'package:traderscircuit/resources/routes/route_name.dart';
|
||||||
|
import 'package:traderscircuit/view/MainScreen/stockDetails/stock_details_screen.dart';
|
||||||
|
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||||
|
import 'package:traderscircuit/view_model/HomeApi/Search_api.dart';
|
||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
class Search extends StatefulWidget {
|
||||||
|
const Search({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<Search> createState() => _SearchState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _SearchState extends State<Search> {
|
||||||
|
RxBool isLoading = true.obs;
|
||||||
|
SearchModel searchModel = SearchModel();
|
||||||
|
TextEditingController searchController = TextEditingController();
|
||||||
|
Timer? _debounce;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_loadSearchData();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _loadSearchData() async {
|
||||||
|
if (searchController.text.isEmpty || searchController.text.length < 2) {
|
||||||
|
setState(() {
|
||||||
|
searchModel = SearchModel(data: []);
|
||||||
|
isLoading.value = false;
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final value =
|
||||||
|
await SearchAPI().searchData(searchText: searchController.text);
|
||||||
|
setState(() {
|
||||||
|
searchModel = SearchModel.fromJson(value.data);
|
||||||
|
isLoading.value = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _onSearchChanged() {
|
||||||
|
if (_debounce?.isActive ?? false) _debounce?.cancel();
|
||||||
|
_debounce = Timer(const Duration(milliseconds: 300), () {
|
||||||
|
setState(() {
|
||||||
|
isLoading.value = true;
|
||||||
|
});
|
||||||
|
_loadSearchData();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_debounce?.cancel();
|
||||||
|
searchController.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
toolbarHeight: 70.h,
|
||||||
|
scrolledUnderElevation: 0.0,
|
||||||
|
backgroundColor: Colors.black,
|
||||||
|
elevation: 0,
|
||||||
|
automaticallyImplyLeading: false,
|
||||||
|
titleSpacing: 0,
|
||||||
|
centerTitle: true,
|
||||||
|
leading: GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
Get.back();
|
||||||
|
},
|
||||||
|
child: Center(
|
||||||
|
child: Icon(
|
||||||
|
Icons.arrow_back_ios,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// appBar: const CommonAppbar(
|
||||||
|
// titleTxt: "",
|
||||||
|
// ),
|
||||||
|
backgroundColor: Colors.black,
|
||||||
|
extendBody: true,
|
||||||
|
body: Obx(
|
||||||
|
() => Stack(
|
||||||
|
children: [
|
||||||
|
const CommonBlurLeft(),
|
||||||
|
const CommonBlurRight(),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
CustomTextFormField(
|
||||||
|
autofocus: true,
|
||||||
|
onInput: (p0) {
|
||||||
|
_onSearchChanged();
|
||||||
|
},
|
||||||
|
leadingIcon: const Icon(
|
||||||
|
Icons.search,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
hintText: "Search",
|
||||||
|
texttype: TextInputType.text,
|
||||||
|
textEditingController: searchController,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 10.h,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: isLoading.value
|
||||||
|
? const Center(
|
||||||
|
child: CircularProgressIndicator(
|
||||||
|
color: Color(0xFF0093FF),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: searchModel.data == null || searchModel.data!.isEmpty
|
||||||
|
? const Center(
|
||||||
|
child: Text(
|
||||||
|
"Try Searching For TATA MOTORS, HCL...",
|
||||||
|
style: TextStyle(color: Colors.white),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: ListView.separated(
|
||||||
|
shrinkWrap: true,
|
||||||
|
itemCount: searchModel.data?.length ?? 0,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
return InkWell(
|
||||||
|
onTap: () {
|
||||||
|
Get.to(const StockDetailsScreen(),
|
||||||
|
arguments: {
|
||||||
|
"instrument_name": searchModel.data!
|
||||||
|
.elementAt(index)
|
||||||
|
.instrumentKey,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Image.asset(
|
||||||
|
"assets/images/png/search.png",
|
||||||
|
height: 35.h,
|
||||||
|
width: 35.w,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 25.w,
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
width: 230.w,
|
||||||
|
child: text16W500(searchModel
|
||||||
|
.data!
|
||||||
|
.elementAt(index)
|
||||||
|
.name ??
|
||||||
|
""),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 297.w,
|
||||||
|
child: text12W400(
|
||||||
|
searchModel.data!
|
||||||
|
.elementAt(index)
|
||||||
|
.tradingSymbol ??
|
||||||
|
"",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
separatorBuilder:
|
||||||
|
(BuildContext context, int index) =>
|
||||||
|
const Divider(
|
||||||
|
color: Color(0xff242424),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,68 +39,68 @@ class _StockDetailsScreenState extends State<StockDetailsScreen> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
dv.log(instrumentName);
|
dv.log(instrumentName);
|
||||||
if (productsController.isUpstoxTokenNotExpired.value) {
|
if (productsController.isUpstoxTokenNotExpired.value) {
|
||||||
// StockDetailsApi()
|
StockDetailsApi()
|
||||||
// .getStockDetails(
|
.getStockDetails(
|
||||||
// FormData.fromMap({"upstox_instrument_key": instrumentName}))
|
FormData.fromMap({"upstox_instrument_key": instrumentName}))
|
||||||
// .then((value) {
|
.then((value) {
|
||||||
// final Map<String, dynamic> data = value.data;
|
final Map<String, dynamic> data = value.data;
|
||||||
|
|
||||||
// Map<String, dynamic> data1 = data["data"]['stock_data']['data'];
|
Map<String, dynamic> data1 = data["data"]['stock_data']['data'];
|
||||||
// String dynamicKey = data1.keys.first;
|
String dynamicKey = data1.keys.first;
|
||||||
// // Access nested data using dynamic key
|
// Access nested data using dynamic key
|
||||||
// Map<String, dynamic> dynamicData = data1[dynamicKey];
|
Map<String, dynamic> dynamicData = data1[dynamicKey];
|
||||||
|
|
||||||
// List<Candles>? candles = [];
|
List<Candles>? candles = [];
|
||||||
|
|
||||||
// for (var a in data["data"]['candle_stick']["data"]["candles"]) {
|
for (var a in data["data"]['candle_stick']["data"]["candles"]) {
|
||||||
// candles.add(Candles(
|
candles.add(Candles(
|
||||||
// timestamp: a[0],
|
timestamp: a[0],
|
||||||
// open: a[1].toDouble(),
|
open: a[1].toDouble(),
|
||||||
// high: a[2].toDouble(),
|
high: a[2].toDouble(),
|
||||||
// low: a[3].toDouble(),
|
low: a[3].toDouble(),
|
||||||
// close: a[4].toDouble(),
|
close: a[4].toDouble(),
|
||||||
// volume: a[5].toInt(),
|
volume: a[5].toInt(),
|
||||||
// openInterest: a[6],
|
openInterest: a[6],
|
||||||
// ));
|
));
|
||||||
// }
|
}
|
||||||
// candles = candles.reversed.toList();
|
candles = candles.reversed.toList();
|
||||||
// stockDetailsModel = StockDetailsModel(
|
stockDetailsModel = StockDetailsModel(
|
||||||
// status: data["status"],
|
status: data["status"],
|
||||||
// message: data["message"],
|
message: data["message"],
|
||||||
// statusCode: data["status_code"],
|
statusCode: data["status_code"],
|
||||||
// data: Data(
|
data: Data(
|
||||||
// stockData: StockInfo(
|
stockData: StockInfo(
|
||||||
// ohlc: Ohlc.fromJson(dynamicData['ohlc']),
|
ohlc: Ohlc.fromJson(dynamicData['ohlc']),
|
||||||
// averagePrice: dynamicData['average_price'].toDouble(),
|
averagePrice: dynamicData['average_price'].toDouble(),
|
||||||
// instrumentToken: dynamicData['instrument_token'],
|
instrumentToken: dynamicData['instrument_token'],
|
||||||
// lastPrice: dynamicData['last_price'].toDouble(),
|
lastPrice: dynamicData['last_price'].toDouble(),
|
||||||
// lastTradeTime: dynamicData['last_trade_time'],
|
lastTradeTime: dynamicData['last_trade_time'],
|
||||||
// lowerCircuitLimit:
|
lowerCircuitLimit:
|
||||||
// dynamicData['lower_circuit_limit'].toDouble(),
|
dynamicData['lower_circuit_limit'].toDouble(),
|
||||||
// netChange: dynamicData['net_change'].toDouble(),
|
netChange: dynamicData['net_change'].toDouble(),
|
||||||
// oi: dynamicData['oi'],
|
oi: dynamicData['oi'],
|
||||||
// oiDayHigh: dynamicData['oi_day_high'],
|
oiDayHigh: dynamicData['oi_day_high'],
|
||||||
// oiDayLow: dynamicData['oi_day_low'],
|
oiDayLow: dynamicData['oi_day_low'],
|
||||||
// symbol: dynamicData['symbol'],
|
symbol: dynamicData['symbol'],
|
||||||
// timestamp: dynamicData['timestamp'],
|
timestamp: dynamicData['timestamp'],
|
||||||
// totalBuyQuantity: dynamicData['total_buy_quantity'],
|
totalBuyQuantity: dynamicData['total_buy_quantity'],
|
||||||
// totalSellQuantity: dynamicData['total_sell_quantity'],
|
totalSellQuantity: dynamicData['total_sell_quantity'],
|
||||||
// upperCircuitLimit: dynamicData['upper_circuit_limit'],
|
upperCircuitLimit: dynamicData['upper_circuit_limit'],
|
||||||
// volume: dynamicData['volume'],
|
volume: dynamicData['volume'],
|
||||||
// ),
|
),
|
||||||
// candleStick: CandleStick(candles: candles),
|
candleStick: CandleStick(candles: candles),
|
||||||
// optionChain:
|
optionChain:
|
||||||
// OptionChain.fromJson(data["data"]['option_chain'])));
|
OptionChain.fromJson(data["data"]['option_chain'])));
|
||||||
|
|
||||||
// netChange = dynamicData['net_change'].toString();
|
netChange = dynamicData['net_change'].toString();
|
||||||
// _calculatePercentageChange(
|
_calculatePercentageChange(
|
||||||
// stockDetailsModel!.data!.stockData!.ohlc!.open!,
|
stockDetailsModel!.data!.stockData!.ohlc!.open!,
|
||||||
// stockDetailsModel!.data!.stockData!.lastPrice!);
|
stockDetailsModel!.data!.stockData!.lastPrice!);
|
||||||
|
|
||||||
// isLoading.value = false;
|
isLoading.value = false;
|
||||||
// });
|
});
|
||||||
|
|
||||||
initializeWebSocket();
|
// initializeWebSocket();
|
||||||
} else {
|
} else {
|
||||||
isLoading.value = false;
|
isLoading.value = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,7 +165,9 @@ class _KycState extends State<Kyc> {
|
|||||||
? SizedBox()
|
? SizedBox()
|
||||||
: InkWell(
|
: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(RouteName.updateriskprofile);
|
Get.toNamed(RouteName.updateriskprofile, arguments: {
|
||||||
|
"fromScreen": "login-flow",
|
||||||
|
});
|
||||||
},
|
},
|
||||||
child: text16W400("skip"),
|
child: text16W400("skip"),
|
||||||
),
|
),
|
||||||
|
|||||||
25
lib/view_model/HomeApi/Search_api.dart
Normal file
25
lib/view_model/HomeApi/Search_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 SearchAPI {
|
||||||
|
Future<ResponseData<dynamic>> searchData({String searchText = ""}) async {
|
||||||
|
final response = await NetworkApiServices().getApi(
|
||||||
|
ApiUrls.searchData + "?search=${searchText}",
|
||||||
|
);
|
||||||
|
log("data received");
|
||||||
|
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