api integration about us, privacy, terms and condition and faq api pending
This commit is contained in:
29
android/app/google-services.json
Normal file
29
android/app/google-services.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "580254405290",
|
||||
"project_id": "tradercircuit-b5744",
|
||||
"storage_bucket": "tradercircuit-b5744.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:580254405290:android:77f13f510048b79e10b6d3",
|
||||
"android_client_info": {
|
||||
"package_name": "com.example.traderscircuit"
|
||||
}
|
||||
},
|
||||
"oauth_client": [],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDA19anPZQE9wwK0Lbr-KMoa-dfIanZrlU"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": []
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
30
ios/Runner/GoogleService-Info.plist
Normal file
30
ios/Runner/GoogleService-Info.plist
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>API_KEY</key>
|
||||
<string>AIzaSyDcB4KjuddPkpnWwqutw_4TlfKaOTZIXa0</string>
|
||||
<key>GCM_SENDER_ID</key>
|
||||
<string>580254405290</string>
|
||||
<key>PLIST_VERSION</key>
|
||||
<string>1</string>
|
||||
<key>BUNDLE_ID</key>
|
||||
<string>com.example.traderscircuit</string>
|
||||
<key>PROJECT_ID</key>
|
||||
<string>tradercircuit-b5744</string>
|
||||
<key>STORAGE_BUCKET</key>
|
||||
<string>tradercircuit-b5744.appspot.com</string>
|
||||
<key>IS_ADS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_ANALYTICS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_APPINVITE_ENABLED</key>
|
||||
<true></true>
|
||||
<key>IS_GCM_ENABLED</key>
|
||||
<true></true>
|
||||
<key>IS_SIGNIN_ENABLED</key>
|
||||
<true></true>
|
||||
<key>GOOGLE_APP_ID</key>
|
||||
<string>1:580254405290:ios:94435ecb64979c4a10b6d3</string>
|
||||
</dict>
|
||||
</plist>
|
||||
7
ios/firebase_app_id_file.json
Normal file
7
ios/firebase_app_id_file.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"file_generated_by": "FlutterFire CLI",
|
||||
"purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
|
||||
"GOOGLE_APP_ID": "1:580254405290:ios:94435ecb64979c4a10b6d3",
|
||||
"FIREBASE_PROJECT_ID": "tradercircuit-b5744",
|
||||
"GCM_SENDER_ID": "580254405290"
|
||||
}
|
||||
@@ -2,11 +2,12 @@ import 'dart:io';
|
||||
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:traderscircuit/Utils/Dialogs.dart';
|
||||
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'package:traderscircuit/controller/contact_us_controller.dart';
|
||||
|
||||
import '../utils.dart';
|
||||
|
||||
class FilePickerMethod {
|
||||
ContactUsController contactUsController = Get.put(ContactUsController());
|
||||
String extractFileName(String filePath) {
|
||||
@@ -28,7 +29,7 @@ class FilePickerMethod {
|
||||
|
||||
if (result != null) {
|
||||
if (contactUsController.attachmentFileList.length + result.count > 3) {
|
||||
utils.showToast("Can Select Max 3 Files");
|
||||
Utils.showToast("Can Select Max 3 Files");
|
||||
return null;
|
||||
} else {
|
||||
return result.paths.map((path) => File(path!)).toList();
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fluttertoast/fluttertoast.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class utils {
|
||||
static showToast(String? msg) {
|
||||
if (msg != null && msg != "null" && msg.isNotEmpty) {
|
||||
Fluttertoast.showToast(msg: msg);
|
||||
}
|
||||
}
|
||||
|
||||
static loader() {
|
||||
Get.dialog(
|
||||
Dialog(
|
||||
elevation: 0,
|
||||
backgroundColor: Colors.transparent,
|
||||
child: WillPopScope(
|
||||
child: Container(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
CircularProgressIndicator(
|
||||
color: Color(0xffc18948),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
onWillPop: () async => false),
|
||||
),
|
||||
barrierDismissible: false,
|
||||
);
|
||||
}
|
||||
}
|
||||
16
lib/Utils/api_urls.dart
Normal file
16
lib/Utils/api_urls.dart
Normal file
@@ -0,0 +1,16 @@
|
||||
class ApiUrls {
|
||||
//Base URL
|
||||
static const base = "http://192.168.50.117/Trader_circuit/api/";
|
||||
|
||||
// About API
|
||||
static String aboutUsApi = "${base}aboutUs";
|
||||
|
||||
// Privacy Policy API
|
||||
static String privacyPolicyApi = "${base}privacyPolicy";
|
||||
|
||||
//Terms and Condition API
|
||||
static String termsConditionApi = "${base}termsAndCondition";
|
||||
|
||||
//FAQ API
|
||||
static String faqApi = "${base}getFaq";
|
||||
}
|
||||
18
lib/Utils/base_manager.dart
Normal file
18
lib/Utils/base_manager.dart
Normal file
@@ -0,0 +1,18 @@
|
||||
class ResponseData<T> {
|
||||
ResponseData(this.message, this.status, {this.data});
|
||||
|
||||
final T? data;
|
||||
final String message;
|
||||
final ResponseStatus status;
|
||||
|
||||
@override
|
||||
String toString() => message;
|
||||
}
|
||||
|
||||
enum ResponseStatus {
|
||||
SUCCESS,
|
||||
|
||||
FAILED,
|
||||
|
||||
PRIVATE,
|
||||
}
|
||||
64
lib/Utils/utils.dart
Normal file
64
lib/Utils/utils.dart
Normal file
@@ -0,0 +1,64 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:fluttertoast/fluttertoast.dart';
|
||||
import 'package:get/get.dart' as getx;
|
||||
|
||||
class Utils {
|
||||
static Future<MultipartFile> networkImageToMultipartFile(
|
||||
String imageUrl) async {
|
||||
Dio dio = Dio();
|
||||
|
||||
Response<Uint8List> response = await dio.get<Uint8List>(imageUrl,
|
||||
options: Options(responseType: ResponseType.bytes));
|
||||
|
||||
MultipartFile multipartFile = MultipartFile.fromBytes(
|
||||
response.data!,
|
||||
filename: imageUrl.substring(imageUrl.lastIndexOf("/") + 1),
|
||||
);
|
||||
|
||||
return multipartFile;
|
||||
}
|
||||
|
||||
static Future<MultipartFile> assetImageToMultipartFile(
|
||||
String assetImagePath, String fileName) async {
|
||||
ByteData assetByteData = await rootBundle.load(assetImagePath);
|
||||
List<int> assetBytes = assetByteData.buffer.asUint8List();
|
||||
|
||||
MultipartFile file = MultipartFile.fromBytes(
|
||||
assetBytes,
|
||||
filename: fileName,
|
||||
);
|
||||
|
||||
return file;
|
||||
}
|
||||
|
||||
static showToast(String? msg) {
|
||||
if (msg != null && msg != "null" && msg.isNotEmpty) {
|
||||
Fluttertoast.showToast(
|
||||
msg: msg,
|
||||
toastLength: Toast.LENGTH_LONG,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
static loader() {
|
||||
getx.Get.dialog(
|
||||
Dialog(
|
||||
elevation: 0,
|
||||
backgroundColor: Colors.transparent,
|
||||
child: WillPopScope(
|
||||
child: const Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
CircularProgressIndicator(
|
||||
color: Color(0xFF9A0000),
|
||||
),
|
||||
],
|
||||
),
|
||||
onWillPop: () async => false),
|
||||
),
|
||||
barrierDismissible: false,
|
||||
);
|
||||
}
|
||||
}
|
||||
5
lib/data/network/base_api_services.dart
Normal file
5
lib/data/network/base_api_services.dart
Normal file
@@ -0,0 +1,5 @@
|
||||
abstract class BaseApiServices {
|
||||
Future<dynamic> getApi(String url);
|
||||
Future<dynamic> postApi(var data, String url);
|
||||
Future<dynamic> deleteApi(String url, var data);
|
||||
}
|
||||
158
lib/data/network/network_api_services.dart
Normal file
158
lib/data/network/network_api_services.dart
Normal file
@@ -0,0 +1,158 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:traderscircuit/Utils/utils.dart';
|
||||
|
||||
import '../../Utils/base_manager.dart';
|
||||
import 'base_api_services.dart';
|
||||
|
||||
class NetworkApiServices extends BaseApiServices {
|
||||
Dio dio = Dio();
|
||||
|
||||
@override
|
||||
Future<ResponseData> getApi(String url) async {
|
||||
if (kDebugMode) {
|
||||
print("api url is >>> $url");
|
||||
}
|
||||
Response response;
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
String? token = prefs.getString('token').toString();
|
||||
log(token);
|
||||
try {
|
||||
response = await dio.get(
|
||||
url,
|
||||
// options: Options(headers: {
|
||||
// 'authorization': "Bearer $token",
|
||||
|
||||
// // "device-id": deviceId
|
||||
// })
|
||||
);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
return ResponseData<dynamic>(
|
||||
"success",
|
||||
data: response.data,
|
||||
ResponseStatus.SUCCESS,
|
||||
);
|
||||
} else {
|
||||
try {
|
||||
return ResponseData<dynamic>(
|
||||
response.data['message'].toString(), ResponseStatus.FAILED);
|
||||
} catch (_) {
|
||||
return ResponseData<dynamic>(
|
||||
response.statusMessage!, ResponseStatus.FAILED);
|
||||
}
|
||||
}
|
||||
} on Exception catch (e) {
|
||||
if (e is DioException) {
|
||||
if (e.response == null) {
|
||||
// Get.to(() => const ErrorScreen());
|
||||
} else {}
|
||||
}
|
||||
return ResponseData<dynamic>(
|
||||
'Oops something Went Wrong', ResponseStatus.FAILED);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<ResponseData> postApi(data, String url) async {
|
||||
if (kDebugMode) {
|
||||
print("data >>> $data");
|
||||
print("api url is >>> $url");
|
||||
}
|
||||
Response response;
|
||||
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
String? token = prefs.getString('token');
|
||||
try {
|
||||
response = await dio.post(url,
|
||||
data: data,
|
||||
options: (token == null || token == "")
|
||||
? Options(
|
||||
headers: {
|
||||
"Authorization":
|
||||
"Basic KzIkcVBiSlIzNncmaGUoalMmV0R6ZkpqdEVoSlVLVXA6dCRCZHEmSnQmc3Y0eUdqY0VVcTg5aEVZZHVSalhIMnU=",
|
||||
},
|
||||
)
|
||||
: Options(headers: {
|
||||
"Authorization": "Bearer $token",
|
||||
//'access-token': token,
|
||||
}));
|
||||
} on Exception catch (e) {
|
||||
if (e is DioException) {
|
||||
log(e.response.toString());
|
||||
if (e.response == null) {
|
||||
// Get.to(() => const ErrorScreen());
|
||||
}
|
||||
}
|
||||
return ResponseData<dynamic>(
|
||||
'Oops something Went Wrong', ResponseStatus.FAILED);
|
||||
}
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
return ResponseData<dynamic>("success", ResponseStatus.SUCCESS,
|
||||
data: response.data);
|
||||
} else if (response.statusCode == 203) {
|
||||
print(response.data);
|
||||
return ResponseData<dynamic>("validation", ResponseStatus.PRIVATE,
|
||||
data: response.data);
|
||||
} else if (response.statusCode == 202) {
|
||||
print(response.data);
|
||||
return ResponseData<dynamic>("success", ResponseStatus.PRIVATE,
|
||||
data: response.data);
|
||||
} else {
|
||||
try {
|
||||
return ResponseData<dynamic>(
|
||||
response.data['message'].toString(), ResponseStatus.FAILED);
|
||||
} catch (_) {
|
||||
return ResponseData<dynamic>(
|
||||
response.statusMessage!, ResponseStatus.FAILED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<ResponseData> deleteApi(String url, data) async {
|
||||
if (kDebugMode) {
|
||||
print("api url is >>> $url");
|
||||
}
|
||||
Response response;
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
String? token = prefs.getString('token').toString();
|
||||
log(token);
|
||||
try {
|
||||
response = await dio.delete(url,
|
||||
data: data,
|
||||
options: Options(headers: {
|
||||
'authorization': "Bearer $token",
|
||||
|
||||
// "device-id": deviceId
|
||||
}));
|
||||
} on Exception catch (_) {
|
||||
return ResponseData<dynamic>(
|
||||
'Oops something Went Wrong', ResponseStatus.FAILED);
|
||||
}
|
||||
if (response.statusCode == 200) {
|
||||
return ResponseData<dynamic>(
|
||||
"success",
|
||||
data: response.data,
|
||||
ResponseStatus.SUCCESS,
|
||||
);
|
||||
} else if (response.statusCode == 203) {
|
||||
Utils.showToast(response.data["message"]);
|
||||
return ResponseData<dynamic>("validation", ResponseStatus.PRIVATE,
|
||||
data: response.data);
|
||||
} else {
|
||||
try {
|
||||
return ResponseData<dynamic>(
|
||||
response.data['message'].toString(), ResponseStatus.FAILED);
|
||||
} catch (_) {
|
||||
return ResponseData<dynamic>(
|
||||
response.statusMessage!, ResponseStatus.FAILED);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
68
lib/firebase_options.dart
Normal file
68
lib/firebase_options.dart
Normal file
@@ -0,0 +1,68 @@
|
||||
// File generated by FlutterFire CLI.
|
||||
// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members
|
||||
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
|
||||
import 'package:flutter/foundation.dart'
|
||||
show defaultTargetPlatform, kIsWeb, TargetPlatform;
|
||||
|
||||
/// Default [FirebaseOptions] for use with your Firebase apps.
|
||||
///
|
||||
/// Example:
|
||||
/// ```dart
|
||||
/// import 'firebase_options.dart';
|
||||
/// // ...
|
||||
/// await Firebase.initializeApp(
|
||||
/// options: DefaultFirebaseOptions.currentPlatform,
|
||||
/// );
|
||||
/// ```
|
||||
class DefaultFirebaseOptions {
|
||||
static FirebaseOptions get currentPlatform {
|
||||
if (kIsWeb) {
|
||||
throw UnsupportedError(
|
||||
'DefaultFirebaseOptions have not been configured for web - '
|
||||
'you can reconfigure this by running the FlutterFire CLI again.',
|
||||
);
|
||||
}
|
||||
switch (defaultTargetPlatform) {
|
||||
case TargetPlatform.android:
|
||||
return android;
|
||||
case TargetPlatform.iOS:
|
||||
return ios;
|
||||
case TargetPlatform.macOS:
|
||||
throw UnsupportedError(
|
||||
'DefaultFirebaseOptions have not been configured for macos - '
|
||||
'you can reconfigure this by running the FlutterFire CLI again.',
|
||||
);
|
||||
case TargetPlatform.windows:
|
||||
throw UnsupportedError(
|
||||
'DefaultFirebaseOptions have not been configured for windows - '
|
||||
'you can reconfigure this by running the FlutterFire CLI again.',
|
||||
);
|
||||
case TargetPlatform.linux:
|
||||
throw UnsupportedError(
|
||||
'DefaultFirebaseOptions have not been configured for linux - '
|
||||
'you can reconfigure this by running the FlutterFire CLI again.',
|
||||
);
|
||||
default:
|
||||
throw UnsupportedError(
|
||||
'DefaultFirebaseOptions are not supported for this platform.',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
static const FirebaseOptions android = FirebaseOptions(
|
||||
apiKey: 'AIzaSyDA19anPZQE9wwK0Lbr-KMoa-dfIanZrlU',
|
||||
appId: '1:580254405290:android:77f13f510048b79e10b6d3',
|
||||
messagingSenderId: '580254405290',
|
||||
projectId: 'tradercircuit-b5744',
|
||||
storageBucket: 'tradercircuit-b5744.appspot.com',
|
||||
);
|
||||
|
||||
static const FirebaseOptions ios = FirebaseOptions(
|
||||
apiKey: 'AIzaSyDcB4KjuddPkpnWwqutw_4TlfKaOTZIXa0',
|
||||
appId: '1:580254405290:ios:94435ecb64979c4a10b6d3',
|
||||
messagingSenderId: '580254405290',
|
||||
projectId: 'tradercircuit-b5744',
|
||||
storageBucket: 'tradercircuit-b5744.appspot.com',
|
||||
iosBundleId: 'com.example.traderscircuit',
|
||||
);
|
||||
}
|
||||
@@ -6,12 +6,25 @@ import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:traderscircuit/firebase_options.dart';
|
||||
import 'package:traderscircuit/resources/routes/route_name.dart';
|
||||
import 'package:firebase_core/firebase_core.dart';
|
||||
import 'package:traderscircuit/resources/routes/routes.dart';
|
||||
import 'package:onesignal_flutter/onesignal_flutter.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
await Firebase.initializeApp(
|
||||
options: DefaultFirebaseOptions.currentPlatform,
|
||||
);
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
OneSignal.shared.setAppId("af55bb59-5ce9-4d95-92b8-e30d9ed06a73");
|
||||
OneSignal.shared.promptUserForPushNotificationPermission();
|
||||
OneSignal.shared
|
||||
.setSubscriptionObserver((OSSubscriptionStateChanges changes) async {
|
||||
await prefs.setString('playerId', changes.to.userId!);
|
||||
});
|
||||
// GlobalVariables globalVariables = GlobalVariables();
|
||||
//token = prefs.getString('token');
|
||||
// OnBoard = prefs.getBool("OnBoard");
|
||||
|
||||
75
lib/model/AboutUsModel/about_us_model.dart
Normal file
75
lib/model/AboutUsModel/about_us_model.dart
Normal file
@@ -0,0 +1,75 @@
|
||||
class AboutUsModel {
|
||||
String? status;
|
||||
int? statusCode;
|
||||
String? message;
|
||||
Data? data;
|
||||
|
||||
AboutUsModel({this.status, this.statusCode, this.message, this.data});
|
||||
|
||||
AboutUsModel.fromJson(Map<String, dynamic> json) {
|
||||
status = json['status'];
|
||||
statusCode = json['status_code'];
|
||||
message = json['message'];
|
||||
data = json['data'] != null ? Data.fromJson(json['data']) : null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['status'] = status;
|
||||
data['status_code'] = statusCode;
|
||||
data['message'] = message;
|
||||
if (this.data != null) {
|
||||
data['data'] = this.data!.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Data {
|
||||
int? id;
|
||||
int? type;
|
||||
String? content;
|
||||
String? isActive;
|
||||
String? createdBy;
|
||||
String? modifiedBy;
|
||||
String? deletedAt;
|
||||
String? createdAt;
|
||||
String? updatedAt;
|
||||
|
||||
Data(
|
||||
{this.id,
|
||||
this.type,
|
||||
this.content,
|
||||
this.isActive,
|
||||
this.createdBy,
|
||||
this.modifiedBy,
|
||||
this.deletedAt,
|
||||
this.createdAt,
|
||||
this.updatedAt});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
type = json['type'];
|
||||
content = json['content'];
|
||||
isActive = json['is_active'];
|
||||
createdBy = json['created_by'] ?? "";
|
||||
modifiedBy = json['modified_by'] ?? "";
|
||||
deletedAt = json['deleted_at'] ?? "";
|
||||
createdAt = json['created_at'];
|
||||
updatedAt = json['updated_at'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['id'] = id;
|
||||
data['type'] = type;
|
||||
data['content'] = content;
|
||||
data['is_active'] = isActive;
|
||||
data['created_by'] = createdBy;
|
||||
data['modified_by'] = modifiedBy;
|
||||
data['deleted_at'] = deletedAt;
|
||||
data['created_at'] = createdAt;
|
||||
data['updated_at'] = updatedAt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
140
lib/model/FAQModel/faq_model.dart
Normal file
140
lib/model/FAQModel/faq_model.dart
Normal file
@@ -0,0 +1,140 @@
|
||||
class FAQModel {
|
||||
String? status;
|
||||
int? statusCode;
|
||||
String? message;
|
||||
List<Data>? data;
|
||||
|
||||
FAQModel({this.status, this.statusCode, this.message, this.data});
|
||||
|
||||
FAQModel.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(Data.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['status'] = status;
|
||||
data['status_code'] = statusCode;
|
||||
data['message'] = message;
|
||||
if (this.data != null) {
|
||||
data['data'] = this.data!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Data {
|
||||
int? id;
|
||||
String? categoryName;
|
||||
String? isActive;
|
||||
String? createdBy;
|
||||
String? modifiedBy;
|
||||
String? deletedAt;
|
||||
String? createdAt;
|
||||
String? updatedAt;
|
||||
List<FaqQueAns>? faqQueAns;
|
||||
|
||||
Data(
|
||||
{this.id,
|
||||
this.categoryName,
|
||||
this.isActive,
|
||||
this.createdBy,
|
||||
this.modifiedBy,
|
||||
this.deletedAt,
|
||||
this.createdAt,
|
||||
this.updatedAt,
|
||||
this.faqQueAns});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
categoryName = json['category_name'];
|
||||
isActive = json['is_active'];
|
||||
createdBy = json['created_by'] ?? "";
|
||||
modifiedBy = json['modified_by'] ?? "";
|
||||
deletedAt = json['deleted_at'] ?? "";
|
||||
createdAt = json['created_at'];
|
||||
updatedAt = json['updated_at'];
|
||||
if (json['faq_que_ans'] != null) {
|
||||
faqQueAns = <FaqQueAns>[];
|
||||
json['faq_que_ans'].forEach((v) {
|
||||
faqQueAns!.add(FaqQueAns.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['id'] = id;
|
||||
data['category_name'] = categoryName;
|
||||
data['is_active'] = isActive;
|
||||
data['created_by'] = createdBy;
|
||||
data['modified_by'] = modifiedBy;
|
||||
data['deleted_at'] = deletedAt;
|
||||
data['created_at'] = createdAt;
|
||||
data['updated_at'] = updatedAt;
|
||||
if (faqQueAns != null) {
|
||||
data['faq_que_ans'] = faqQueAns!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class FaqQueAns {
|
||||
int? id;
|
||||
int? faqMasterId;
|
||||
String? faqQuestion;
|
||||
String? faqAnswer;
|
||||
String? isActive;
|
||||
String? createdBy;
|
||||
String? modifiedBy;
|
||||
String? deletedAt;
|
||||
String? createdAt;
|
||||
String? updatedAt;
|
||||
|
||||
FaqQueAns(
|
||||
{this.id,
|
||||
this.faqMasterId,
|
||||
this.faqQuestion,
|
||||
this.faqAnswer,
|
||||
this.isActive,
|
||||
this.createdBy,
|
||||
this.modifiedBy,
|
||||
this.deletedAt,
|
||||
this.createdAt,
|
||||
this.updatedAt});
|
||||
|
||||
FaqQueAns.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
faqMasterId = json['faq_master_id'];
|
||||
faqQuestion = json['faq_question'];
|
||||
faqAnswer = json['faq_answer'];
|
||||
isActive = json['is_active'];
|
||||
createdBy = json['created_by'] ?? "";
|
||||
modifiedBy = json['modified_by'] ?? "";
|
||||
deletedAt = json['deleted_at'] ?? "";
|
||||
createdAt = json['created_at'];
|
||||
updatedAt = json['updated_at'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['id'] = id;
|
||||
data['faq_master_id'] = faqMasterId;
|
||||
data['faq_question'] = faqQuestion;
|
||||
data['faq_answer'] = faqAnswer;
|
||||
data['is_active'] = isActive;
|
||||
data['created_by'] = createdBy;
|
||||
data['modified_by'] = modifiedBy;
|
||||
data['deleted_at'] = deletedAt;
|
||||
data['created_at'] = createdAt;
|
||||
data['updated_at'] = updatedAt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
75
lib/model/PrivacyPolicyModel/privacy_policy_model.dart
Normal file
75
lib/model/PrivacyPolicyModel/privacy_policy_model.dart
Normal file
@@ -0,0 +1,75 @@
|
||||
class PrivacyPolicyModel {
|
||||
String? status;
|
||||
int? statusCode;
|
||||
String? message;
|
||||
Data? data;
|
||||
|
||||
PrivacyPolicyModel({this.status, this.statusCode, this.message, this.data});
|
||||
|
||||
PrivacyPolicyModel.fromJson(Map<String, dynamic> json) {
|
||||
status = json['status'];
|
||||
statusCode = json['status_code'];
|
||||
message = json['message'];
|
||||
data = json['data'] != null ? Data.fromJson(json['data']) : null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['status'] = status;
|
||||
data['status_code'] = statusCode;
|
||||
data['message'] = message;
|
||||
if (this.data != null) {
|
||||
data['data'] = this.data!.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Data {
|
||||
int? id;
|
||||
int? type;
|
||||
String? content;
|
||||
String? isActive;
|
||||
String? createdBy;
|
||||
String? modifiedBy;
|
||||
String? deletedAt;
|
||||
String? createdAt;
|
||||
String? updatedAt;
|
||||
|
||||
Data(
|
||||
{this.id,
|
||||
this.type,
|
||||
this.content,
|
||||
this.isActive,
|
||||
this.createdBy,
|
||||
this.modifiedBy,
|
||||
this.deletedAt,
|
||||
this.createdAt,
|
||||
this.updatedAt});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
type = json['type'];
|
||||
content = json['content'];
|
||||
isActive = json['is_active'];
|
||||
createdBy = json['created_by'] ?? "";
|
||||
modifiedBy = json['modified_by'] ?? "";
|
||||
deletedAt = json['deleted_at'] ?? "";
|
||||
createdAt = json['created_at'];
|
||||
updatedAt = json['updated_at'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['id'] = id;
|
||||
data['type'] = type;
|
||||
data['content'] = content;
|
||||
data['is_active'] = isActive;
|
||||
data['created_by'] = createdBy;
|
||||
data['modified_by'] = modifiedBy;
|
||||
data['deleted_at'] = deletedAt;
|
||||
data['created_at'] = createdAt;
|
||||
data['updated_at'] = updatedAt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
76
lib/model/TermsConditionModel/terms_condition_model.dart
Normal file
76
lib/model/TermsConditionModel/terms_condition_model.dart
Normal file
@@ -0,0 +1,76 @@
|
||||
class TermsAndConditionModel {
|
||||
String? status;
|
||||
int? statusCode;
|
||||
String? message;
|
||||
Data? data;
|
||||
|
||||
TermsAndConditionModel(
|
||||
{this.status, this.statusCode, this.message, this.data});
|
||||
|
||||
TermsAndConditionModel.fromJson(Map<String, dynamic> json) {
|
||||
status = json['status'];
|
||||
statusCode = json['status_code'];
|
||||
message = json['message'];
|
||||
data = json['data'] != null ? Data.fromJson(json['data']) : null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['status'] = status;
|
||||
data['status_code'] = statusCode;
|
||||
data['message'] = message;
|
||||
if (this.data != null) {
|
||||
data['data'] = this.data!.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Data {
|
||||
int? id;
|
||||
int? type;
|
||||
String? content;
|
||||
String? isActive;
|
||||
String? createdBy;
|
||||
String? modifiedBy;
|
||||
String? deletedAt;
|
||||
String? createdAt;
|
||||
String? updatedAt;
|
||||
|
||||
Data(
|
||||
{this.id,
|
||||
this.type,
|
||||
this.content,
|
||||
this.isActive,
|
||||
this.createdBy,
|
||||
this.modifiedBy,
|
||||
this.deletedAt,
|
||||
this.createdAt,
|
||||
this.updatedAt});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
type = json['type'];
|
||||
content = json['content'];
|
||||
isActive = json['is_active'];
|
||||
createdBy = json['created_by'] ?? "";
|
||||
modifiedBy = json['modified_by'] ?? "";
|
||||
deletedAt = json['deleted_at'] ?? "";
|
||||
createdAt = json['created_at'];
|
||||
updatedAt = json['updated_at'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['id'] = id;
|
||||
data['type'] = type;
|
||||
data['content'] = content;
|
||||
data['is_active'] = isActive;
|
||||
data['created_by'] = createdBy;
|
||||
data['modified_by'] = modifiedBy;
|
||||
data['deleted_at'] = deletedAt;
|
||||
data['created_at'] = createdAt;
|
||||
data['updated_at'] = updatedAt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:traderscircuit/Utils/Common/CommonAppbar.dart';
|
||||
import 'package:traderscircuit/Utils/text.dart';
|
||||
import 'package:traderscircuit/model/AboutUsModel/about_us_model.dart';
|
||||
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||
import 'package:traderscircuit/view_model/AboutApi/about_api.dart';
|
||||
|
||||
class AboutUs extends StatefulWidget {
|
||||
const AboutUs({super.key});
|
||||
@@ -12,44 +15,65 @@ class AboutUs extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _AboutUsState extends State<AboutUs> {
|
||||
RxBool isLoading = true.obs;
|
||||
AboutUsModel aboutUsModel = AboutUsModel();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
AboutUsApi().getAboutUsData().then((value) {
|
||||
aboutUsModel = AboutUsModel.fromJson(value.data);
|
||||
isLoading.value = false;
|
||||
});
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: CommonAppbar(
|
||||
appBar: const CommonAppbar(
|
||||
titleTxt: "About Us",
|
||||
),
|
||||
backgroundColor: Colors.black,
|
||||
extendBody: true,
|
||||
body: Stack(
|
||||
children: [
|
||||
CommonBlurLeft(),
|
||||
CommonBlurRight(),
|
||||
Stack(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
||||
child: ListView(
|
||||
physics: BouncingScrollPhysics(),
|
||||
// mainAxisAlignment: MainAxisAlignment.start,
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
||||
children: [
|
||||
// CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
body: Obx(
|
||||
() => Stack(
|
||||
children: [
|
||||
const CommonBlurLeft(),
|
||||
const CommonBlurRight(),
|
||||
isLoading.value
|
||||
? const Center(
|
||||
child: CircularProgressIndicator(
|
||||
color: Color(0xFF9A0000),
|
||||
),
|
||||
text16W400(
|
||||
"""Lorem ipsum dolor sit amet, conse consectetur adipiscing elit, sed do euio eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ulla ullamco laboris nisi ut aliquip ex ea It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. \n\ncommodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui \n\nofficia deserunt mollit anim id est laborum. cupidatat non proident, sunt in culpa qui commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."""),
|
||||
)
|
||||
: Stack(
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 16, vertical: 16),
|
||||
child: ListView(
|
||||
physics: const BouncingScrollPhysics(),
|
||||
// mainAxisAlignment: MainAxisAlignment.start,
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
children: [
|
||||
// CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
text16W400(
|
||||
aboutUsModel.data!.content!,
|
||||
),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,9 @@ import 'package:traderscircuit/Utils/Common/CustomTextFormField.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/FAQModel/faq_model.dart';
|
||||
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||
import 'package:traderscircuit/view_model/FaqApi/faq_api.dart';
|
||||
|
||||
class FaqScreen extends StatefulWidget {
|
||||
const FaqScreen({super.key});
|
||||
@@ -17,60 +19,26 @@ class FaqScreen extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _FaqScreenState extends State<FaqScreen> {
|
||||
List<String> containerTexts = [
|
||||
"Subscriptions",
|
||||
"Investments",
|
||||
"App features"
|
||||
];
|
||||
List<String> categoryList = [];
|
||||
|
||||
RxBool isLoading = true.obs;
|
||||
FAQModel faqModel = FAQModel();
|
||||
|
||||
final selectedIndex = 0.obs;
|
||||
late RxList<bool> isExpandedList;
|
||||
@override
|
||||
void initState() {
|
||||
isExpandedList = RxList.generate(Faqcard.length, (index) => index == 0);
|
||||
// isExpandedList = RxList.generate(Faqcard.length, (index) => index == 0);
|
||||
FAQApi().getFAQData().then((value) {
|
||||
faqModel = FAQModel.fromJson(value.data);
|
||||
for (var a in faqModel.data!) {
|
||||
categoryList.add(a.categoryName!);
|
||||
}
|
||||
isLoading.value = false;
|
||||
});
|
||||
super.initState();
|
||||
}
|
||||
|
||||
List<Map<String, String>> Faqcard = [
|
||||
{
|
||||
'title': 'How to create new account?',
|
||||
'content':
|
||||
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry's standard dummy text ever since.",
|
||||
},
|
||||
{
|
||||
'title': 'What is Traders Circuits ?',
|
||||
'content':
|
||||
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry's standard dummy text ever since.",
|
||||
},
|
||||
{
|
||||
'title': 'What is Traders Circuits ?',
|
||||
'content':
|
||||
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry's standard dummy text ever since.",
|
||||
},
|
||||
{
|
||||
'title': 'What is Traders Circuits ?',
|
||||
'content':
|
||||
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry's standard dummy text ever since.",
|
||||
},
|
||||
{
|
||||
'title': 'What is Traders Circuits ?',
|
||||
'content':
|
||||
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry's standard dummy text ever since.",
|
||||
},
|
||||
];
|
||||
|
||||
List<Map<String, String>> Faqcard2 = [
|
||||
{
|
||||
'title': 'How to create new account?',
|
||||
'content':
|
||||
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry's standard dummy text ever since.",
|
||||
},
|
||||
{
|
||||
'title': 'What is Traders Circuits ?',
|
||||
'content':
|
||||
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry's standard dummy text ever since.",
|
||||
},
|
||||
];
|
||||
final selectedIndex = 0.obs;
|
||||
late RxList<bool> isExpandedList;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -80,94 +48,105 @@ class _FaqScreenState extends State<FaqScreen> {
|
||||
),
|
||||
backgroundColor: Colors.black,
|
||||
extendBody: true,
|
||||
body: Stack(children: [
|
||||
CommonBlurLeft(),
|
||||
CommonBlurRight(),
|
||||
Stack(children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16),
|
||||
child: ListView(physics: BouncingScrollPhysics(), children: [
|
||||
text25W600('FAQ'),
|
||||
sizedBoxHeight(20),
|
||||
CustomTextFormField1(
|
||||
hintText: 'Search Chats',
|
||||
leadingIcon: Container(
|
||||
height: 20,
|
||||
width: 20,
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/svg/search-svgrepo-com.svg',
|
||||
),
|
||||
),
|
||||
body: Obx(
|
||||
() => Stack(children: [
|
||||
CommonBlurLeft(),
|
||||
CommonBlurRight(),
|
||||
isLoading.value
|
||||
? const Center(
|
||||
child: CircularProgressIndicator(
|
||||
color: Color(0xFF9A0000),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
SizedBox(
|
||||
height: 60,
|
||||
width: double.infinity,
|
||||
// color: Colors.amber,
|
||||
child: ListView.builder(
|
||||
shrinkWrap: true,
|
||||
scrollDirection: Axis.horizontal,
|
||||
itemCount: containerTexts.length,
|
||||
itemBuilder: (context, index) {
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
selectedIndex.value = index;
|
||||
},
|
||||
child: Row(
|
||||
children: [
|
||||
topContainer(containerTexts[index], index),
|
||||
sizedBoxWidth(10.w)
|
||||
],
|
||||
),
|
||||
);
|
||||
}),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Obx(() {
|
||||
return selectedIndex == 0
|
||||
? Column(
|
||||
children: List.generate(Faqcard.length, (index) {
|
||||
return customExpandableItem(
|
||||
isExpanded: isExpandedList[index],
|
||||
title: Faqcard[index]['title']!,
|
||||
content: Faqcard[index]['content']!,
|
||||
toggleExpansion: () => toggleExpansion(index),
|
||||
);
|
||||
}))
|
||||
: Column(
|
||||
children: List.generate(Faqcard2.length, (index) {
|
||||
return customExpandableItem(
|
||||
isExpanded: isExpandedList[index],
|
||||
title: Faqcard2[index]['title']!,
|
||||
content: Faqcard2[index]['content']!,
|
||||
toggleExpansion: () => toggleExpansion(index),
|
||||
);
|
||||
}));
|
||||
}),
|
||||
)
|
||||
: Stack(children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16),
|
||||
child: ListView(
|
||||
physics: BouncingScrollPhysics(),
|
||||
children: [
|
||||
text25W600('FAQ'),
|
||||
sizedBoxHeight(20),
|
||||
CustomTextFormField1(
|
||||
hintText: 'Search Chats',
|
||||
leadingIcon: Container(
|
||||
height: 20,
|
||||
width: 20,
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/svg/search-svgrepo-com.svg',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
SizedBox(
|
||||
height: 60,
|
||||
width: double.infinity,
|
||||
// color: Colors.amber,
|
||||
child: ListView.builder(
|
||||
shrinkWrap: true,
|
||||
scrollDirection: Axis.horizontal,
|
||||
itemCount: categoryList.length,
|
||||
itemBuilder: (context, index) {
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
selectedIndex.value = index;
|
||||
},
|
||||
child: Row(
|
||||
children: [
|
||||
topContainer(
|
||||
categoryList[index], index),
|
||||
sizedBoxWidth(10.w)
|
||||
],
|
||||
),
|
||||
);
|
||||
}),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
// Obx(() {
|
||||
// return selectedIndex == 0
|
||||
// ? Column(
|
||||
// children: List.generate(Faqcard.length, (index) {
|
||||
// return customExpandableItem(
|
||||
// isExpanded: isExpandedList[index],
|
||||
// title: Faqcard[index]['title']!,
|
||||
// content: Faqcard[index]['content']!,
|
||||
// toggleExpansion: () => toggleExpansion(index),
|
||||
// );
|
||||
// }))
|
||||
// : Column(
|
||||
// children: List.generate(Faqcard2.length, (index) {
|
||||
// return customExpandableItem(
|
||||
// isExpanded: isExpandedList[index],
|
||||
// title: Faqcard2[index]['title']!,
|
||||
// content: Faqcard2[index]['content']!,
|
||||
// toggleExpansion: () => toggleExpansion(index),
|
||||
// );
|
||||
// }));
|
||||
// }),
|
||||
|
||||
// ListView.builder(
|
||||
// shrinkWrap: true,
|
||||
// itemCount: Faqcard.length,
|
||||
// itemBuilder: (BuildContext context, int index) {
|
||||
// return Obx(
|
||||
// () {
|
||||
// return customExpandableItem(
|
||||
// isExpanded: isExpandedList[index],
|
||||
// title: Faqcard[index]['title']!,
|
||||
// content: Faqcard[index]['content']!,
|
||||
// toggleExpansion: () => toggleExpansion(index),
|
||||
// );
|
||||
// },
|
||||
// );
|
||||
// },
|
||||
// ),
|
||||
// ListView.builder(
|
||||
// shrinkWrap: true,
|
||||
// itemCount: Faqcard.length,
|
||||
// itemBuilder: (BuildContext context, int index) {
|
||||
// return Obx(
|
||||
// () {
|
||||
// return customExpandableItem(
|
||||
// isExpanded: isExpandedList[index],
|
||||
// title: Faqcard[index]['title']!,
|
||||
// content: Faqcard[index]['content']!,
|
||||
// toggleExpansion: () => toggleExpansion(index),
|
||||
// );
|
||||
// },
|
||||
// );
|
||||
// },
|
||||
// ),
|
||||
|
||||
sizedBoxHeight(30.h),
|
||||
]))
|
||||
])
|
||||
]));
|
||||
sizedBoxHeight(30.h),
|
||||
]))
|
||||
])
|
||||
]),
|
||||
));
|
||||
}
|
||||
|
||||
Widget topContainer(String text, int index) {
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:traderscircuit/Utils/Common/CommonAppbar.dart';
|
||||
import 'package:traderscircuit/Utils/text.dart';
|
||||
import 'package:traderscircuit/model/PrivacyPolicyModel/privacy_policy_model.dart';
|
||||
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||
import 'package:traderscircuit/view_model/PrivacyPolicyApi/privacy_poilcy_api.dart';
|
||||
|
||||
class PrivacyPolicy extends StatefulWidget {
|
||||
const PrivacyPolicy({super.key});
|
||||
@@ -12,44 +15,61 @@ class PrivacyPolicy extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _PrivacyPolicyState extends State<PrivacyPolicy> {
|
||||
RxBool isLoading = true.obs;
|
||||
PrivacyPolicyModel privacyPolicyModel = PrivacyPolicyModel();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
PrivacyPolicyApi().getPrivacyPolicyData().then((value) {
|
||||
privacyPolicyModel = PrivacyPolicyModel.fromJson(value.data);
|
||||
isLoading.value = false;
|
||||
});
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: CommonAppbar(
|
||||
appBar: const CommonAppbar(
|
||||
titleTxt: "Privacy Policy",
|
||||
),
|
||||
backgroundColor: Colors.black,
|
||||
extendBody: true,
|
||||
body: Stack(
|
||||
children: [
|
||||
CommonBlurLeft(),
|
||||
CommonBlurRight(),
|
||||
Stack(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
||||
child: ListView(
|
||||
physics: BouncingScrollPhysics(),
|
||||
// mainAxisAlignment: MainAxisAlignment.start,
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
||||
children: [
|
||||
// CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
body: Obx(
|
||||
() => Stack(
|
||||
children: [
|
||||
const CommonBlurLeft(),
|
||||
const CommonBlurRight(),
|
||||
isLoading.value
|
||||
? const Center(
|
||||
child: CircularProgressIndicator(
|
||||
color: Color(0xFF9A0000),
|
||||
),
|
||||
text16W400(
|
||||
"""Lorem ipsum dolor sit amet, conse consectetur adipiscing elit, sed do euio eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ulla ullamco laboris nisi ut aliquip ex ea It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. \n\ncommodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui \n\nofficia deserunt mollit anim id est laborum. cupidatat non proident, sunt in culpa qui commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."""),
|
||||
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
: Stack(
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 16, vertical: 16),
|
||||
child: ListView(
|
||||
physics: const BouncingScrollPhysics(),
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
text16W400(
|
||||
privacyPolicyModel.data!.content!,
|
||||
),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:traderscircuit/Utils/Common/CommonAppbar.dart';
|
||||
import 'package:traderscircuit/Utils/text.dart';
|
||||
import 'package:traderscircuit/model/TermsConditionModel/terms_condition_model.dart';
|
||||
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||
import 'package:traderscircuit/view_model/TermsAndConditionApi/terms_condition_api.dart';
|
||||
|
||||
class TermsAndConditions extends StatefulWidget {
|
||||
const TermsAndConditions({super.key});
|
||||
@@ -13,44 +15,65 @@ class TermsAndConditions extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _TermsAndConditionsState extends State<TermsAndConditions> {
|
||||
RxBool isLoading = true.obs;
|
||||
TermsAndConditionModel termsAndConditionModel = TermsAndConditionModel();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
TermsAndConditionApi().getTermsAndConditionData().then((value) {
|
||||
termsAndConditionModel = TermsAndConditionModel.fromJson(value.data);
|
||||
isLoading.value = false;
|
||||
});
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: CommonAppbar(
|
||||
appBar: const CommonAppbar(
|
||||
titleTxt: "Terms & Conditions",
|
||||
),
|
||||
backgroundColor: Colors.black,
|
||||
extendBody: true,
|
||||
body: Stack(
|
||||
children: [
|
||||
CommonBlurLeft(),
|
||||
CommonBlurRight(),
|
||||
Stack(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
||||
child: ListView(
|
||||
physics: BouncingScrollPhysics(),
|
||||
// mainAxisAlignment: MainAxisAlignment.start,
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
||||
children: [
|
||||
// CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
body: Obx(
|
||||
() => Stack(
|
||||
children: [
|
||||
const CommonBlurLeft(),
|
||||
const CommonBlurRight(),
|
||||
isLoading.value
|
||||
? const Center(
|
||||
child: CircularProgressIndicator(
|
||||
color: Color(0xFF9A0000),
|
||||
),
|
||||
text16W400(
|
||||
"""Lorem ipsum dolor sit amet, conse consectetur adipiscing elit, sed do euio eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ulla ullamco laboris nisi ut aliquip ex ea It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. \n\ncommodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui \n\nofficia deserunt mollit anim id est laborum. cupidatat non proident, sunt in culpa qui commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."""),
|
||||
)
|
||||
: Stack(
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 16, vertical: 16),
|
||||
child: ListView(
|
||||
physics: const BouncingScrollPhysics(),
|
||||
// mainAxisAlignment: MainAxisAlignment.start,
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
children: [
|
||||
// CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
text16W400(
|
||||
termsAndConditionModel.data!.content!,
|
||||
),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,8 @@ class _KycState extends State<Kyc> {
|
||||
Color secondaryColor = Colors.grey.shade800;
|
||||
|
||||
KYCController kycController = Get.put(KYCController());
|
||||
TextEditingController panController = TextEditingController();
|
||||
TextEditingController addharController = TextEditingController();
|
||||
|
||||
// DateTime timebackPressed = DateTime.now();
|
||||
|
||||
@@ -358,6 +360,18 @@ class _KycState extends State<Kyc> {
|
||||
SizedBox(
|
||||
height: 30.h,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
text18W400("Pan Card"),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 15.h,
|
||||
),
|
||||
const CustomTextFormField(),
|
||||
SizedBox(
|
||||
height: 15.h,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
text18W400("Aadhar Number"),
|
||||
|
||||
@@ -8,7 +8,6 @@ import 'package:traderscircuit/Utils/Common/commonBotton.dart';
|
||||
import 'package:traderscircuit/Utils/text.dart';
|
||||
import 'package:traderscircuit/resources/routes/route_name.dart';
|
||||
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||
import 'package:traderscircuit/Utils/Dialogs.dart';
|
||||
|
||||
class VerifyOTP extends StatefulWidget {
|
||||
const VerifyOTP({super.key});
|
||||
|
||||
25
lib/view_model/AboutApi/about_api.dart
Normal file
25
lib/view_model/AboutApi/about_api.dart
Normal file
@@ -0,0 +1,25 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import '../../Utils/api_urls.dart';
|
||||
import '../../Utils/base_manager.dart';
|
||||
import '../../data/network/network_api_services.dart';
|
||||
|
||||
class AboutUsApi {
|
||||
Future<ResponseData<dynamic>> getAboutUsData() async {
|
||||
final response = await NetworkApiServices().getApi(
|
||||
ApiUrls.aboutUsApi,
|
||||
);
|
||||
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;
|
||||
}
|
||||
}
|
||||
25
lib/view_model/FaqApi/faq_api.dart
Normal file
25
lib/view_model/FaqApi/faq_api.dart
Normal file
@@ -0,0 +1,25 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import '../../Utils/api_urls.dart';
|
||||
import '../../Utils/base_manager.dart';
|
||||
import '../../data/network/network_api_services.dart';
|
||||
|
||||
class FAQApi {
|
||||
Future<ResponseData<dynamic>> getFAQData() async {
|
||||
final response = await NetworkApiServices().getApi(
|
||||
ApiUrls.faqApi,
|
||||
);
|
||||
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;
|
||||
}
|
||||
}
|
||||
25
lib/view_model/PrivacyPolicyApi/privacy_poilcy_api.dart
Normal file
25
lib/view_model/PrivacyPolicyApi/privacy_poilcy_api.dart
Normal file
@@ -0,0 +1,25 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import '../../Utils/api_urls.dart';
|
||||
import '../../Utils/base_manager.dart';
|
||||
import '../../data/network/network_api_services.dart';
|
||||
|
||||
class PrivacyPolicyApi {
|
||||
Future<ResponseData<dynamic>> getPrivacyPolicyData() async {
|
||||
final response = await NetworkApiServices().getApi(
|
||||
ApiUrls.privacyPolicyApi,
|
||||
);
|
||||
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;
|
||||
}
|
||||
}
|
||||
25
lib/view_model/TermsAndConditionApi/terms_condition_api.dart
Normal file
25
lib/view_model/TermsAndConditionApi/terms_condition_api.dart
Normal file
@@ -0,0 +1,25 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import '../../Utils/api_urls.dart';
|
||||
import '../../Utils/base_manager.dart';
|
||||
import '../../data/network/network_api_services.dart';
|
||||
|
||||
class TermsAndConditionApi {
|
||||
Future<ResponseData<dynamic>> getTermsAndConditionData() async {
|
||||
final response = await NetworkApiServices().getApi(
|
||||
ApiUrls.termsConditionApi,
|
||||
);
|
||||
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;
|
||||
}
|
||||
}
|
||||
174
pubspec.lock
174
pubspec.lock
@@ -33,6 +33,30 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
cached_network_image:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: cached_network_image
|
||||
sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.1"
|
||||
cached_network_image_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image_platform_interface
|
||||
sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
cached_network_image_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image_web
|
||||
sha256: "42a835caa27c220d1294311ac409a43361088625a4f23c820b006dd9bffb3316"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -85,12 +109,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cross_file
|
||||
|
||||
sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e
|
||||
sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.3+8"
|
||||
|
||||
version: "0.3.3+7"
|
||||
crypto:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -115,6 +137,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.10"
|
||||
dio:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: dio
|
||||
sha256: "0978e9a3e45305a80a7210dbeaf79d6ee8bee33f70c8e542dc654c952070217f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.4.2+1"
|
||||
dotted_border:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -195,11 +225,43 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.3+1"
|
||||
firebase_core:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_core
|
||||
sha256: "96607c0e829a581c2a483c658f04e8b159964c3bae2730f73297070bc85d40bb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.24.2"
|
||||
firebase_core_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_platform_interface
|
||||
sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.0"
|
||||
firebase_core_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_web
|
||||
sha256: d585bdf3c656c3f7821ba1bd44da5f13365d22fcecaf5eb75c4295246aaa83c0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.10.0"
|
||||
flutter:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_cache_manager:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_cache_manager
|
||||
sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.1"
|
||||
flutter_lints:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
@@ -278,10 +340,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http
|
||||
sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba
|
||||
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
version: "1.1.0"
|
||||
http_parser:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -398,12 +460,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: lottie
|
||||
|
||||
sha256: ce2bb2605753915080e4ee47f036a64228c88dc7f56f7bc1dbe912d75b55b1e2
|
||||
sha256: a93542cc2d60a7057255405f62252533f8e8956e7e06754955669fd32fb4b216
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
|
||||
version: "2.7.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -444,6 +504,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.0"
|
||||
octo_image:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: octo_image
|
||||
sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
onesignal_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: onesignal_flutter
|
||||
sha256: "29d2ac76d9e4821d98d754f3785db99d4dbfd69f96f7997a387582bef9d0daa5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.5.3"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -468,6 +544,30 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.1"
|
||||
path_provider:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider
|
||||
sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
path_provider_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.2"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_foundation
|
||||
sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.2"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -532,6 +632,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.7.4"
|
||||
rxdart:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: rxdart
|
||||
sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.27.7"
|
||||
shared_preferences:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -601,6 +709,30 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.10.0"
|
||||
sprintf:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sprintf
|
||||
sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.0"
|
||||
sqflite:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite
|
||||
sha256: a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.2"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_common
|
||||
sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.3"
|
||||
stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -625,6 +757,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
synchronized:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: synchronized
|
||||
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0+1"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -649,6 +789,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.2"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: uuid
|
||||
sha256: "22c94e5ad1e75f9934b766b53c742572ee2677c56bc871d850a57dad0f82127f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.2"
|
||||
vector_graphics:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -714,7 +862,5 @@ packages:
|
||||
source: hosted
|
||||
version: "6.3.0"
|
||||
sdks:
|
||||
|
||||
dart: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dart: ">=3.1.0 <4.0.0"
|
||||
flutter: ">=3.13.0"
|
||||
|
||||
13
pubspec.yaml
13
pubspec.yaml
@@ -22,21 +22,16 @@ dependencies:
|
||||
pin_code_fields: ^8.0.1
|
||||
fluttertoast: ^8.0.9
|
||||
dropdown_button2: ^2.1.4
|
||||
|
||||
|
||||
|
||||
|
||||
gap: ^3.0.1
|
||||
image_picker: ^1.0.7
|
||||
dotted_border: ^2.1.0
|
||||
image_cropper: ^5.0.1
|
||||
|
||||
|
||||
gap: ^3.0.1
|
||||
|
||||
file_picker: ^8.0.0+1
|
||||
lottie: ^2.7.0
|
||||
|
||||
onesignal_flutter: ^3.5.1
|
||||
cached_network_image: ^3.3.1
|
||||
firebase_core:
|
||||
dio: ^5.1.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
Reference in New Issue
Block a user