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

This commit is contained in:
jayesh
2024-06-19 11:17:09 +05:30
14 changed files with 431 additions and 118 deletions

View File

@@ -12,7 +12,12 @@
"package_name": "com.example.traderscircuit"
}
},
"oauth_client": [],
"oauth_client": [
{
"client_id": "307701736370-i1n71t46k2t7e9s6d5livs41hkjposgn.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyCMQhYq9XDYcxNbCxM0aWl9Lu9-AI3BveU"
@@ -20,7 +25,19 @@
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
"other_platform_oauth_client": [
{
"client_id": "307701736370-i1n71t46k2t7e9s6d5livs41hkjposgn.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "307701736370-il62k6tumpu03hnaiqkefj44494bvae6.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.example.traderscircuit"
}
}
]
}
}
}

View File

@@ -142,8 +142,8 @@
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
0B649054ED34D466116A76B4 /* [CP] Embed Pods Frameworks */,
AEB6A3F5C2646ACD5FD07AD4 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */,
3991F7BB322D4A93148EBA5F /* [CP] Copy Pods Resources */,
2A6497560A75576FDBB7BFE8 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */,
);
buildRules = (
);
@@ -220,6 +220,24 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
2A6497560A75576FDBB7BFE8 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\"";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n";
};
3991F7BB322D4A93148EBA5F /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -268,24 +286,6 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
AEB6A3F5C2646ACD5FD07AD4 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\"";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n";
};
F8F084BCF7BD9B22A56A9676 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;

View File

@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CLIENT_ID</key>
<string>307701736370-il62k6tumpu03hnaiqkefj44494bvae6.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.307701736370-il62k6tumpu03hnaiqkefj44494bvae6</string>
<key>API_KEY</key>
<string>AIzaSyAX1quOawuuZYT8WuHjLNnfk_e6e6hdt-U</string>
<key>GCM_SENDER_ID</key>

View File

@@ -58,7 +58,7 @@ Widget CommonYesNoBtn({
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color.fromRGBO(70, 5, 1, 0.8),
Color(0xFF2D7AEE).withOpacity(0.14),
Color.fromRGBO(102, 102, 102, 0.8),
],
),
@@ -74,9 +74,10 @@ Widget CommonYesNoBtn({
height: 50.h,
width: 170.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.r),
border: Border.all(color: Color(0xFF9A0000), width: 1.w),
color: Color(0xFF6C0000)),
borderRadius: BorderRadius.circular(8.r),
// border: Border.all(color: Color(0xFF9A0000), width: 1.w),
color: Color(0xFF2D7AEE),
),
child: Center(child: text18W500('No')),
),
)

View File

@@ -84,7 +84,6 @@ class ApiUrls {
//Stock Details
static String stockDetailsApi = "${base}get-details-of-stock";
//Stock Details
static String subscriptionApi = "${base}my-subscription-page";
//setting
@@ -92,4 +91,10 @@ class ApiUrls {
//search
static String searchData = "${base}search-stock";
//logout
static String logout = "${base}Logout";
//signin with google
static String googlesignin = "${base}sign-in-with-google";
}

View File

@@ -63,6 +63,8 @@ class DefaultFirebaseOptions {
messagingSenderId: '307701736370',
projectId: 'traders-circuit',
storageBucket: 'traders-circuit.appspot.com',
iosClientId: '307701736370-il62k6tumpu03hnaiqkefj44494bvae6.apps.googleusercontent.com',
iosBundleId: 'com.example.traderscircuit',
);
}
}

View File

@@ -84,7 +84,10 @@ class _HomeScreenState extends State<HomeScreen> {
drawerEnableOpenDragGesture: false,
key: _scaffoldKey1,
backgroundColor: Colors.black,
drawer: Container(child: const SideMenu()),
drawer: Container(
width: 300,
child: const SideMenu(),
),
extendBody: true,
appBar: AppBar(
toolbarHeight: 70.h,

View File

@@ -973,7 +973,7 @@ class HoldingsTabBar extends StatelessWidget {
indicatorColor: const Color(0xFFFFFFFF),
labelColor: Colors.white,
unselectedLabelColor: const Color(0xffFFFFFF),
overlayColor: WidgetStateProperty.all(const Color(0xFFFFFFFF)),
overlayColor: MaterialStateProperty.all(const Color(0xFFFFFFFF)),
tabs: const [
Tab(
text: 'Holdings',
@@ -1013,7 +1013,7 @@ class PortfolioTabBar extends StatelessWidget {
indicatorColor: const Color(0xff6C0000),
labelColor: Colors.white,
unselectedLabelColor: const Color(0xFF464646),
overlayColor: WidgetStateProperty.all(const Color(0xFFFFFFFF)),
overlayColor: MaterialStateProperty.all(const Color(0xFFFFFFFF)),
tabs: List.generate(portfolioLength, (counter) {
return Tab(
text: portoflioName[counter].brokerName,

View File

@@ -6,8 +6,10 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:traderscircuit/Utils/Common/commonBotton.dart';
import 'package:traderscircuit/Utils/Common/comonGlassmorphicContainer.dart';
import 'package:traderscircuit/Utils/Common/sized_box.dart';
import 'package:traderscircuit/Utils/base_manager.dart';
import 'package:traderscircuit/Utils/text.dart';
import 'package:traderscircuit/resources/routes/route_name.dart';
import 'package:traderscircuit/view_model/LogoutApi/logout_api.dart';
import 'package:traderscircuit/view_model/ProfileAPI/GetProfileApi.dart';
import 'webview_subscription.dart';
@@ -161,7 +163,7 @@ class _SideMenuState extends State<SideMenu> {
title: text18W400('My Subscription'),
trailing: Container(
height: 35.h,
width: 122.w,
width: 80.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6.r),
color: const Color(0xFF34C759),
@@ -221,20 +223,20 @@ class _SideMenuState extends State<SideMenu> {
title: text18W400('Update My KYC'),
trailing: Container(
height: 40.h,
width: 122.w,
width: 80.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6.r),
color: const Color(0xFF3A3A3A).withOpacity(0.6),
border: Border.all(color: const Color(0xFF9A0000))),
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 10.w),
padding: EdgeInsets.symmetric(horizontal: 4.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
text12W400('Pending'),
text10W300('Pending'),
Container(
height: 30.h,
width: 30.h,
height: 22.h,
width: 22.w,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage(
@@ -272,12 +274,12 @@ class _SideMenuState extends State<SideMenu> {
title: text18W400('My Risk Profile'),
trailing: Container(
height: 35.h,
width: 122.w,
width: 80.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6.r),
color: const Color(0xFF0093FF),
),
child: Center(child: text14W500('Conservative')),
child: Center(child: text10W300('Conservative')),
),
selected: true,
onTap: () {
@@ -385,10 +387,11 @@ LogOutdialog(context) {
width: 140.w,
child: CommonYesNoBtn(
yesonTap: () async {
SharedPreferences prefs =
await SharedPreferences.getInstance();
await prefs.clear();
Get.offNamed(RouteName.loginscreen);
_handleLogout();
// SharedPreferences prefs =
// await SharedPreferences.getInstance();
// await prefs.clear();
// Get.offNamed(RouteName.loginscreen);
},
)),
SizedBox(
@@ -477,7 +480,8 @@ void navigateTo(int index, BuildContext context) {
sizedBoxHeight(50.h),
CommonYesNoBtn(
yesonTap: () {
Get.toNamed(RouteName.loginscreen);
_handleLogout();
// Get.toNamed(RouteName.loginscreen);
},
noonTap: () {
Get.back();
@@ -537,3 +541,26 @@ class sideBarTile extends StatelessWidget {
);
}
}
Future<void> _handleLogout() async {
// Create an instance of the API with required data
var logoutApi = LogoutAPI({
// Add any required data here, e.g., user token or ID
});
// Call the logout API
final response = await logoutApi.logoutApi();
// Handle the response
if (response.status == ResponseStatus.SUCCESS) {
// Clear any user-related data here if necessary
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.clear();
// Navigate to the login screen
Get.offAllNamed(RouteName.loginscreen);
} else {
// Show an error message if logout failed
Get.snackbar('Error', response.message ?? 'Logout failed');
}
}

View File

@@ -2,16 +2,23 @@ import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:glassmorphism/glassmorphism.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:onesignal_flutter/onesignal_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:traderscircuit/Utils/Common/CustomTextFormField.dart';
import 'package:traderscircuit/Utils/Common/commonBotton.dart';
import 'package:traderscircuit/Utils/base_manager.dart';
import 'package:traderscircuit/Utils/text.dart';
import 'package:traderscircuit/Utils/utils.dart';
import 'package:traderscircuit/resources/routes/route_name.dart';
import 'package:traderscircuit/view/login/VerifyOtp.dart';
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
import 'package:traderscircuit/view_model/GoogleApi/google_api.dart';
import '../../view_model/SendOtp/sendOtpObserver.dart';
import '../../view_model/SendOtp/sendOtpbloc.dart';
@@ -31,6 +38,110 @@ class _LoginScreenState extends State<LoginScreen> {
return !phoneNumberExpression.hasMatch(phoneNumber);
}
_signInWithGooglecheck() async {
try {
final GoogleSignIn googleSignIn = GoogleSignIn();
await googleSignIn.signOut();
final GoogleSignInAccount? googleUser = await googleSignIn.signIn();
if (googleUser == null) {
return;
}
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
print('googleAuth AccessToken ${googleAuth.accessToken}');
// Show loading dialog
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return Center(
child: CircularProgressIndicator(
color: Colors.white,
),
);
},
);
final status = await OneSignal.shared.getDeviceState();
final String? playerIdV = status?.userId;
Map<String, String> updata = {
"principal_source_xid": '3',
"access_token": '${googleAuth.accessToken}',
"player_id": playerIdV!,
};
// Call Google API
final response = await GoogleAPI(updata).googleApi();
// Dismiss loading dialog
Navigator.of(context).pop();
if (response.status == ResponseStatus.SUCCESS) {
// await global.setname();
// await global.getVar();
Get.snackbar(
"Success!",
'Google Sign In successful!',
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.green,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString(
'accessToken', response.data["data"]["access-token"]);
isProfileUpdated =
response.data["data"]["user_data"]["profile_updated"];
isriskProfileUpdated =
response.data["data"]["user_data"]["risk_profile_updated"];
isKycUpdated = response.data["data"]["user_data"]["kyc_updated"];
isSecuredAccess = response.data["data"]["user_data"]["secured_access"];
isProfileUpdated == 0
? Get.toNamed(RouteName.adddetails)
:
// isKycUpdated == 0
// ? Get.toNamed(RouteName.kyc)
// :
isriskProfileUpdated == 0
? Get.toNamed(RouteName.updateriskprofile, arguments: {
"fromScreen": "login-flow",
})
: Get.toNamed(RouteName.mainscreen);
print('signup: ${prefs.getString('token')}');
// Get.toNamed(RouteName.adddetails);
} else {
// Show an error message
Get.snackbar(
"Error!",
response.message,
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.red,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
}
} catch (e) {
print("Error during Google sign-in and API call: $e");
Get.snackbar(
"Error!",
'Something went wrong, please try again!',
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.red,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
}
}
@override
Widget build(BuildContext context) {
// final CounterBloc counterbloc = BlocProvider.of<CounterBloc>(context);
@@ -250,7 +361,7 @@ class _LoginScreenState extends State<LoginScreen> {
if (isValid!) {
FocusManager.instance.primaryFocus
?.unfocus();
if (isValid != null && isValid) {
if (isValid != null && isValid) {
Map<String, String> myLoginData = {
"mobile_number": phonecontroller.text,
};
@@ -353,52 +464,57 @@ class _LoginScreenState extends State<LoginScreen> {
SizedBox(
height: 15.h,
),
GlassmorphicContainer(
width: double.infinity,
height: 55.h,
borderRadius: 8,
linearGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
const Color(0xFFffffff).withOpacity(0.1),
const Color(0xFFFFFFFF).withOpacity(0.05),
],
stops: const [
0.1,
1,
]),
border: 0.5,
blur: 10,
borderGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
const Color(0xff4A73FB).withOpacity(0.2),
const Color(0xff4A73FB).withOpacity(0.2),
const Color(0xff4A73FB).withOpacity(0.2),
],
stops: const [
0.3,
0.6,
1,
]),
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
"assets/images/png/google.png",
height: 30.h,
width: 30.w,
),
SizedBox(
width: 7.h,
),
text16W400(
"Continue with google",
),
],
GestureDetector(
onTap: () {
_signInWithGooglecheck();
},
child: GlassmorphicContainer(
width: double.infinity,
height: 55.h,
borderRadius: 8,
linearGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
const Color(0xFFffffff).withOpacity(0.1),
const Color(0xFFFFFFFF).withOpacity(0.05),
],
stops: const [
0.1,
1,
]),
border: 0.5,
blur: 10,
borderGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
const Color(0xff4A73FB).withOpacity(0.2),
const Color(0xff4A73FB).withOpacity(0.2),
const Color(0xff4A73FB).withOpacity(0.2),
],
stops: const [
0.3,
0.6,
1,
]),
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
"assets/images/png/google.png",
height: 30.h,
width: 30.w,
),
SizedBox(
width: 7.h,
),
text16W400(
"Continue with google",
),
],
),
),
),
),

View File

@@ -0,0 +1,34 @@
import 'package:get/get.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:traderscircuit/Utils/api_urls.dart';
import 'package:traderscircuit/Utils/base_manager.dart';
import 'package:traderscircuit/data/network/network_api_services.dart';
import 'package:traderscircuit/resources/routes/route_name.dart';
import 'package:traderscircuit/view/login/VerifyOtp.dart';
class GoogleAPI {
GoogleAPI(this.data);
var data;
Future<ResponseData<dynamic>> googleApi() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
final response = await NetworkApiServices().postApi(
data,
ApiUrls.googlesignin,
);
if (response.status == ResponseStatus.SUCCESS) {
//Map<String, dynamic> responseData = jsonDecode(response.data);
if (response.data["status"] == "success") {
// await prefs.setString('token', response.data["data"]["access"]);
// await prefs.setString('refreshToken', response.data["data"]["refresh"]);
// await prefs.setBool('hasSignedInBefore', response.data["data"]["complete"]);
} else {
return ResponseData<dynamic>(
response.data['message'], ResponseStatus.FAILED);
}
}
return response;
}
}

View File

@@ -0,0 +1,28 @@
import 'package:shared_preferences/shared_preferences.dart';
import 'package:traderscircuit/Utils/api_urls.dart';
import 'package:traderscircuit/Utils/base_manager.dart';
import 'package:traderscircuit/data/network/network_api_services.dart';
class LogoutAPI {
LogoutAPI(this.data);
var data;
Future<ResponseData<dynamic>> logoutApi() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
final response = await NetworkApiServices().postApi(
data,
ApiUrls.logout,
);
if (response.status == ResponseStatus.SUCCESS) {
Map<String, dynamic> responseData =
Map<String, dynamic>.from(response.data);
if (responseData['status'] == "success") {
print("OTP sent successfully");
} else {
return ResponseData<dynamic>(
responseData['message'], ResponseStatus.FAILED);
}
}
return response;
}
}

View File

@@ -337,6 +337,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.5.7+7"
firebase_auth:
dependency: "direct main"
description:
name: firebase_auth
sha256: cfc2d970829202eca09e2896f0a5aa7c87302817ecc0bdfa954f026046bf10ba
url: "https://pub.dev"
source: hosted
version: "4.20.0"
firebase_auth_platform_interface:
dependency: transitive
description:
name: firebase_auth_platform_interface
sha256: a0270e1db3b2098a14cb2a2342b3cd2e7e458e0c391b1f64f6f78b14296ec093
url: "https://pub.dev"
source: hosted
version: "7.3.0"
firebase_auth_web:
dependency: transitive
description:
name: firebase_auth_web
sha256: "64e067e763c6378b7e774e872f0f59f6812885e43020e25cde08f42e9459837b"
url: "https://pub.dev"
source: hosted
version: "5.12.0"
firebase_core:
dependency: "direct main"
description:
@@ -498,10 +522,10 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e
sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f"
url: "https://pub.dev"
source: hosted
version: "2.0.20"
version: "2.0.19"
flutter_screenutil:
dependency: "direct main"
description:
@@ -568,6 +592,54 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.0.0"
google_identity_services_web:
dependency: transitive
description:
name: google_identity_services_web
sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8"
url: "https://pub.dev"
source: hosted
version: "0.3.1+1"
google_sign_in:
dependency: "direct main"
description:
name: google_sign_in
sha256: "0b8787cb9c1a68ad398e8010e8c8766bfa33556d2ab97c439fb4137756d7308f"
url: "https://pub.dev"
source: hosted
version: "6.2.1"
google_sign_in_android:
dependency: transitive
description:
name: google_sign_in_android
sha256: "7647893c65e6720973f0e579051c8f84b877b486614d9f70a404259c41a4632e"
url: "https://pub.dev"
source: hosted
version: "6.1.23"
google_sign_in_ios:
dependency: transitive
description:
name: google_sign_in_ios
sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe
url: "https://pub.dev"
source: hosted
version: "5.7.6"
google_sign_in_platform_interface:
dependency: transitive
description:
name: google_sign_in_platform_interface
sha256: "1f6e5787d7a120cc0359ddf315c92309069171306242e181c09472d1b00a2971"
url: "https://pub.dev"
source: hosted
version: "2.4.5"
google_sign_in_web:
dependency: transitive
description:
name: google_sign_in_web
sha256: f2b3af0ba52ff59439f18962fca71db860f09507a81da929fc0e719270b35db2
url: "https://pub.dev"
source: hosted
version: "0.12.3+3"
html:
dependency: transitive
description:
@@ -628,10 +700,10 @@ packages:
dependency: transitive
description:
name: image_picker_android
sha256: "4161e1f843d8480d2e9025ee22411778c3c9eb7e40076dcf2da23d8242b7b51c"
sha256: "0f57fee1e8bfadf8cc41818bbcd7f72e53bb768a54d9496355d5e8a5681a19f1"
url: "https://pub.dev"
source: hosted
version: "0.8.12+3"
version: "0.8.12+1"
image_picker_for_web:
dependency: transitive
description:
@@ -732,26 +804,26 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
url: "https://pub.dev"
source: hosted
version: "10.0.4"
version: "10.0.0"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
url: "https://pub.dev"
source: hosted
version: "3.0.3"
version: "2.0.1"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "2.0.1"
lints:
dependency: transitive
description:
@@ -780,10 +852,10 @@ packages:
dependency: transitive
description:
name: local_auth_android
sha256: "48dfb2d954da8ef6a77adfc93a29998f7729e9308eaa817e91dea4500317b2c8"
sha256: e0e5b1ea247c5a0951c13a7ee13dc1beae69750e6a2e1910d1ed6a3cd4d56943
url: "https://pub.dev"
source: hosted
version: "1.0.39"
version: "1.0.38"
local_auth_darwin:
dependency: transitive
description:
@@ -844,10 +916,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.11.0"
mime:
dependency: transitive
description:
@@ -924,10 +996,10 @@ packages:
dependency: transitive
description:
name: path_provider_android
sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514"
sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d
url: "https://pub.dev"
source: hosted
version: "2.2.5"
version: "2.2.4"
path_provider_foundation:
dependency: transitive
description:
@@ -1092,10 +1164,10 @@ packages:
dependency: transitive
description:
name: shared_preferences_android
sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577"
sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2"
url: "https://pub.dev"
source: hosted
version: "2.2.3"
version: "2.2.2"
shared_preferences_foundation:
dependency: transitive
description:
@@ -1289,10 +1361,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
version: "0.6.1"
timeago:
dependency: "direct main"
description:
@@ -1321,10 +1393,10 @@ packages:
dependency: transitive
description:
name: url_launcher_android
sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf
sha256: "17cd5e205ea615e2c6ea7a77323a11712dffa0720a8a90540db57a01347f9ad9"
url: "https://pub.dev"
source: hosted
version: "6.3.3"
version: "6.3.2"
url_launcher_ios:
dependency: transitive
description:
@@ -1425,10 +1497,10 @@ packages:
dependency: transitive
description:
name: video_player_android
sha256: "9529001630e42988f755772972d5014d30121610700e8e502278a245939f8fc8"
sha256: "134e1ad410d67e18a19486ed9512c72dfc6d8ffb284d0e8f2e99e903d1ba8fa3"
url: "https://pub.dev"
source: hosted
version: "2.5.0"
version: "2.4.14"
video_player_avfoundation:
dependency: transitive
description:
@@ -1466,10 +1538,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
url: "https://pub.dev"
source: hosted
version: "14.2.1"
version: "13.0.0"
wakelock:
dependency: transitive
description:
@@ -1559,5 +1631,5 @@ packages:
source: hosted
version: "6.5.0"
sdks:
dart: ">=3.4.0 <4.0.0"
flutter: ">=3.22.0"
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.19.0"

View File

@@ -62,8 +62,12 @@ dependencies:
flutter_inappwebview: ^6.0.0
flutter_branch_sdk: ^7.1.0
socket_io_client: ^2.0.3+1
web_socket_channel:
google_sign_in: ^6.2.1
firebase_auth: ^4.20.0
dev_dependencies:
flutter_test: