From c63731734ea8c5f2b945cb0492d650c01cd9afa1 Mon Sep 17 00:00:00 2001 From: Sneha Date: Wed, 13 Aug 2025 12:46:25 +0530 Subject: [PATCH] changes --- lib/common/preloader.dart | 34 +++ lib/common/settings.dart | 250 +++++++++++++++++- lib/login/login.dart | 109 ++++++-- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 8 + pubspec.lock | 211 ++++++++++++++- pubspec.yaml | 5 + .../flutter/generated_plugin_registrant.cc | 6 + windows/flutter/generated_plugins.cmake | 2 + 10 files changed, 591 insertions(+), 39 deletions(-) create mode 100644 lib/common/preloader.dart diff --git a/lib/common/preloader.dart b/lib/common/preloader.dart new file mode 100644 index 0000000..5390f12 --- /dev/null +++ b/lib/common/preloader.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +import 'settings.dart'; + +class Dialogs { + static Future showLoadingDialog(BuildContext context, GlobalKey key) async { + return showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return new WillPopScope( + onWillPop: () async => false, + child: SimpleDialog( + key: key, + backgroundColor: Colors.white, + children: [ + Center( + child: Column(children: [ + CircularProgressIndicator( + valueColor: new AlwaysStoppedAnimation(primaryColor), + ), + SizedBox( + height: 10, + ), + Text( + AppSettings.preloadText, + style: PreloaderText(), + ), + ]), + ) + ])); + }); + } +} \ No newline at end of file diff --git a/lib/common/settings.dart b/lib/common/settings.dart index 94ea43e..9e7cbd3 100644 --- a/lib/common/settings.dart +++ b/lib/common/settings.dart @@ -1,9 +1,12 @@ - - +import 'dart:convert'; import 'dart:io'; - +import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'package:http/http.dart' as http; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:supplier_new/common/preloader.dart'; const Color primaryColor = Color(0XFF1D7AFC); const Color secondaryColor = Color(0XFFBFE0ED); @@ -48,8 +51,79 @@ InputDecoration textFormFieldDecoration(IconData icon,var text){ ); } +TextStyle PreloaderText() { + return TextStyle(color:primaryColor); +} + class AppSettings{ + static SharedPreferences sharedPreferences = + SharedPreferences.getInstance() as SharedPreferences; + + static File? updatedImage; + static String image = ''; + static String userName = ''; + static String loginType = ''; + static String accessType = ''; + static String buildingName = ''; + static String userAddress = ''; + static String email = ''; + static String phoneNumber = ''; + static String accessToken = ''; + static String customerId = ''; + static double userLatitude = 0; + static double userLongitude = 0; + static String customerIdsign = ''; + static String profileImage = ''; + static String preloadText = 'Please wait'; + + + static String host = 'http://armintaaqua.com:3000/api/'; + static String loginUrl = host + 'supplierlogin'; + + // Shared preferences save,get and clear data + static saveData(String _key, _value, type) async { + sharedPreferences = await SharedPreferences.getInstance(); + + if (type == 'STRING') { + await sharedPreferences.setString(_key, _value.toString()); + } else if (type == 'INTEGER') { + await sharedPreferences.setInt(_key, _value); + } else if (type == 'BOOL') { + await sharedPreferences.setBool(_key, _value); + } else if (type == 'DOUBLE') { + await sharedPreferences.setDouble(_key, _value); + } + } + + static getData(String _key, type) async { + sharedPreferences = await SharedPreferences.getInstance(); + if (type == 'STRING') { + return sharedPreferences.getString(_key) ?? ''; + } else if (type == 'INTEGER') { + return sharedPreferences.getInt(_key) ?? -1; + } else if (type == 'BOOL') { + return sharedPreferences.getBool(_key) ?? -1; + } else if (type == 'DOUBLE') { + return sharedPreferences.getDouble(_key) ?? -1; + } + } + + static clearSharedPreferences() async { + sharedPreferences = await SharedPreferences.getInstance(); + await sharedPreferences.clear(); + } + + /* Preloader */ + static GlobalKey preLoaderKey = new GlobalKey(); + static Future preLoaderDialog(BuildContext context) async { + try { + preLoaderKey = new GlobalKey(); + Dialogs.showLoadingDialog(context, preLoaderKey); + } catch (error) {} + } + + static Future internetConnectivity() async { try { final result = await InternetAddress.lookup('google.com'); @@ -61,4 +135,174 @@ class AppSettings{ } return false; } + + /*Apis Starts here*/ + + static Future login(payload) async { + var response = await http.post(Uri.parse(loginUrl), + body: json.encode(payload), + headers: {'Content-type': 'application/json'}); + + if (response.statusCode == 200) { + try { + var _response = json.decode(response.body); + print(_response['simplydata']['error']); + + if (_response['simplydata']['error'] == false) { + await saveAvailableReportAndLocationsInMemory(_response); + //await saveProfilePic(_response); + return true; + } else { + return false; + } + } catch (e) { + // display error toast + return false; + } + } else { + return false; + } + } + /*Apis ends here*/ + + //save data local + static Future saveAvailableReportAndLocationsInMemory( + dynamic input) async { + // save login name information + await saveData('username', input['simplydata']['username'], 'STRING'); + await saveData('logintype', input['simplydata']['loginType'], 'STRING'); + await saveData('all_motor_access', input['simplydata']['all_motor_access'], 'STRING'); + await saveData('buildingname', input['simplydata']['buildingName'], 'STRING'); + await saveData( + 'access_token', input['simplydata']['access_token'], 'STRING'); + await saveData('phone', input['simplydata']['phone'], 'STRING'); + await saveData('email', input['simplydata']['email'][0]['email'], 'STRING'); + await saveData('customerId', input['simplydata']['customerId'], 'STRING'); + await saveData('profile', input['simplydata']['picture'], 'STRING'); + await saveData('user_address', input['simplydata']['address1'], 'STRING'); + if(input['simplydata']['latitude']==0){ + input['simplydata']['latitude']=0.0; + } + if(input['simplydata']['longitude']==0){ + input['simplydata']['longitude']=0.0; + } + await saveData('latitude', input['simplydata']['latitude'], 'DOUBLE'); + await saveData('longitude', input['simplydata']['longitude'], 'DOUBLE'); + await saveData('fcmId', input['simplydata']['fcmId'], 'STRING'); + + //latitude,longitude + await loadDataFromMemory(); + } + + static Future saveProfile(dynamic image) async { + // save login name information + await saveData('profile', image.toString(), 'STRING'); + //await loadDataFromMemory(); + } + + static Uint8List convertBase64Image(String base64String) { + return Base64Decoder().convert(base64String.split(',').last); + } + + static Future loadDataFromMemory() async { + userName = await getData('username', 'STRING'); + loginType = await getData('logintype', 'STRING'); + accessType = await getData('all_motor_access', 'STRING'); + buildingName = await getData('buildingname', 'STRING'); + accessToken = await getData('access_token', 'STRING'); + email = await getData('email', 'STRING'); + userAddress = await getData('user_address', 'STRING'); + phoneNumber = await getData('phone', 'STRING'); + customerId = await getData('customerId', 'STRING'); + userLatitude = await getData('latitude', 'DOUBLE'); + userLongitude = await getData('longitude', 'DOUBLE'); + //profilePictureUrl = await getData('profile', 'STRING'); + // fcmId = await getData('fcmId', 'STRING'); + //profileImage=await getData('profile', 'STRING'); + getProfile(); + } + + static String getStringFromBytes(var data) { + final buffer = data.buffer; + var list = buffer.asUint8List(data.offsetInBytes, data.lengthInBytes); + var bufferdata = utf8.decode(list); + String bs4str = base64.encode(list); + Uint8List decodedbytes = base64.decode(bs4str); +//OR + // String bs4str1 = base64Encode(imgbytes); + String s = new String.fromCharCodes(list); + var outputAsUint8List = new Uint8List.fromList(s.codeUnits); + return bufferdata; + } + + static Uint8List image1(dynamicList) { + List intList = + dynamicList.cast().toList(); //This is the magical line. + Uint8List data = Uint8List.fromList(intList); + return data; + } + + static Future getProfile() async { + final image1 = await getData('profile', 'STRING'); + + //Io.File.fromUri(imageFile.uri) + + var x = image1; + + if (image1 == null) return; + + if (image1 == '') { + updatedImage = null; + } else if (image1 == 'null') { + updatedImage = null; + } else { + final imageTemp = File(image1); + updatedImage = imageTemp; + } + + print(updatedImage); + } + + //assign saved values to variables + static Future saveProfilePic(dynamic input) async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + +// your custom int list + List mList = input['simplydata']['picture']['data']; + + print(mList.length); + //input['simplydata']['picture']['data'];[0,1,2,3] + +// convert your custom list to string list + List stringsList = mList.map((i) => i.toString()).toList(); + +// store your string list in shared prefs + prefs.setStringList("stringList", stringsList); + + // String bar = utf8.decode(bytes); + + //String convertedValue = utf8.decode(mList); + } + + static void longFailedToast(String message) { + Fluttertoast.showToast( + msg: message, + toastLength: Toast.LENGTH_LONG, + gravity: ToastGravity.BOTTOM, + timeInSecForIosWeb: 1, + backgroundColor: Colors.red, + textColor: Colors.white, + fontSize: 16.0); + } + + static void longSuccessToast(String message) { + Fluttertoast.showToast( + msg: message, + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM, + timeInSecForIosWeb: 1, + backgroundColor: Colors.green, + textColor: Colors.white, + fontSize: 16.0); + } } \ No newline at end of file diff --git a/lib/login/login.dart b/lib/login/login.dart index 7d3a50d..8181edb 100644 --- a/lib/login/login.dart +++ b/lib/login/login.dart @@ -1,6 +1,10 @@ + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:supplier_new/common/settings.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; class Login extends StatefulWidget { const Login({super.key}); @@ -11,6 +15,12 @@ class Login extends StatefulWidget { class _LoginState extends State { + final storage = FlutterSecureStorage( + aOptions: AndroidOptions( + resetOnError: true, + encryptedSharedPreferences: true, + ), + ); bool isObscureText=true; TextEditingController mobileNumberController = TextEditingController(); @@ -23,7 +33,6 @@ class _LoginState extends State { super.initState(); } - Future onWillPop() async { final shouldPop = await showDialog(context: context, builder: (context) { return AlertDialog( @@ -68,7 +77,7 @@ class _LoginState extends State { return WillPopScope( onWillPop: () async => onWillPop(), child: Scaffold( - backgroundColor: Colors.white, + backgroundColor: Colors.white, body: Stack( children: [ /*Container( @@ -94,18 +103,6 @@ class _LoginState extends State { ), SizedBox(height:MediaQuery.of(context).size.height * .04,), - /*Align( - alignment: Alignment.bottomLeft, - child: Text('Welcome!', style:fontTextStyle(24,Color(0XFF1C1E20),FontWeight.w800) - - *//*style: GoogleFonts.inter( - textStyle: TextStyle( - fontSize: 24, - fontWeight: FontWeight.bold, - color: Colors.black, - ), - ),*//*), - ),*/ SizedBox(height:MediaQuery.of(context).size.height * .024,), Container( child: TextFormField( @@ -149,7 +146,7 @@ class _LoginState extends State { suffixIcon: IconButton( icon: isObscureText==true?Image.asset('images/eye_icon.png',color: Color(0XFF7E7F80),width: 30,height: 30,):Image.asset('images/open_eye.png',color:Color(0XFF7E7F80),width: 30,height: 30,), - /* Icon( + /* Icon( icon:Image.asset('assets/your_image.png'), color: isObscureText==true?greyColor:primaryColor, ),*/ @@ -170,20 +167,20 @@ class _LoginState extends State { SizedBox(height:MediaQuery.of(context).size.height * .016,), Align( - alignment: Alignment.bottomLeft, - child:GestureDetector( - onTap: (){ - /*Navigator.push( - context, - MaterialPageRoute(builder: (context) => ForgotpasswordNew()), - );*/ - }, - child: Text( - 'Forgot Password?', - style: fontTextStyle(12,Color(0XFF1D7AFC),FontWeight.w600), + alignment: Alignment.bottomLeft, + child:GestureDetector( + onTap: (){ + /* Navigator.push( + context, + MaterialPageRoute(builder: (context) => ForgotpasswordNew()), + );*/ + }, + child: Text( + 'Forgot Password?', + style: fontTextStyle(12,Color(0XFF1D7AFC),FontWeight.w600), - ), - ) + ), + ) ), SizedBox(height:MediaQuery.of(context).size.height * .024,), Container( @@ -194,11 +191,65 @@ class _LoginState extends State { foregroundColor: Colors.white, backgroundColor: primaryColor, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(24.0), // Customize the radius + borderRadius: BorderRadius.circular(12.0), // Customize the radius ), ), onPressed: () async{ + if (mobileNumberController.text != ''&& + passwordController.text != '') { + AppSettings.preLoaderDialog(context); + + bool isOnline = await AppSettings.internetConnectivity(); + + if(isOnline){ + SharedPreferences prefs = await SharedPreferences.getInstance(); + String? fcmToken = prefs.getString('fcmToken'); + var payload = new Map(); + payload["phone"] = mobileNumberController.text.toString(); + payload["password"] = passwordController.text.toString(); + payload["fcmIds"] = [fcmToken]; + + bool signinStatus = await AppSettings.login(payload); + + try{ + if (signinStatus) { + Navigator.of(context,rootNavigator: true).pop(); + String token = AppSettings.accessToken; + await storage.write(key: 'authToken', value: token); + + print('Token saved: $token'); + /*await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const DashboardScreen()), + );*/ + AppSettings.longSuccessToast("Logged in Successfully"); + mobileNumberController.text=''; + passwordController.text=''; + + } else { + Navigator.of(context,rootNavigator: true).pop(); + AppSettings.longFailedToast("Invalid details"); + } + } + catch(exception){ + Navigator.of(context,rootNavigator: true).pop(); + print(exception); + } + } + else{ + Navigator.of(context,rootNavigator: true).pop(); + AppSettings.longFailedToast("Please Check internet"); + } + + + } + else{ + + AppSettings.longFailedToast("Please enter valid details"); + } + }, child: Text('Login',style: fontTextStyle(12,Colors.white,FontWeight.w600),), )), diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index e71a16d..d0e7f79 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); + flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 2e1de87..b29e9ba 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + flutter_secure_storage_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index e777c67..48a819b 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,8 +5,16 @@ import FlutterMacOS import Foundation +import firebase_core +import firebase_messaging +import flutter_secure_storage_macos import path_provider_foundation +import shared_preferences_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) + FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 75fba8d..9b6540a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" + url: "https://pub.dev" + source: hosted + version: "1.3.35" async: dependency: transitive description: @@ -73,6 +81,62 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.3" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + firebase_core: + dependency: transitive + description: + name: firebase_core + sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" + url: "https://pub.dev" + source: hosted + version: "2.32.0" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + sha256: "8bcfad6d7033f5ea951d15b867622a824b13812178bfec0c779b9d81de011bbb" + url: "https://pub.dev" + source: hosted + version: "5.4.2" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + sha256: "362e52457ed2b7b180964769c1e04d1e0ea0259fdf7025fdfedd019d4ae2bd88" + url: "https://pub.dev" + source: hosted + version: "2.17.5" + firebase_messaging: + dependency: "direct main" + description: + name: firebase_messaging + sha256: a1662cc95d9750a324ad9df349b873360af6f11414902021f130c68ec02267c4 + url: "https://pub.dev" + source: hosted + version: "14.9.4" + firebase_messaging_platform_interface: + dependency: transitive + description: + name: firebase_messaging_platform_interface + sha256: "87c4a922cb6f811cfb7a889bdbb3622702443c52a0271636cbc90d813ceac147" + url: "https://pub.dev" + source: hosted + version: "4.5.37" + firebase_messaging_web: + dependency: transitive + description: + name: firebase_messaging_web + sha256: "0d34dca01a7b103ed7f20138bffbb28eb0e61a677bf9e78a028a932e2c7322d5" + url: "https://pub.dev" + source: hosted + version: "3.8.7" flutter: dependency: "direct main" description: flutter @@ -86,27 +150,88 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.2" + flutter_secure_storage: + dependency: "direct main" + description: + name: flutter_secure_storage + sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + url: "https://pub.dev" + source: hosted + version: "9.2.4" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" + url: "https://pub.dev" + source: hosted + version: "3.1.3" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + url: "https://pub.dev" + source: hosted + version: "3.1.2" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + fluttertoast: + dependency: "direct main" + description: + name: fluttertoast + sha256: "95f349437aeebe524ef7d6c9bde3e6b4772717cf46a0eb6a3ceaddc740b297cc" + url: "https://pub.dev" + source: hosted + version: "8.2.8" google_fonts: dependency: "direct main" description: name: google_fonts - sha256: "2776c66b3e97c6cdd58d1bd3281548b074b64f1fd5c8f82391f7456e38849567" + sha256: "6b6f10f0ce3c42f6552d1c70d2c28d764cf22bb487f50f66cca31dcd5194f4d6" url: "https://pub.dev" source: hosted - version: "4.0.5" + version: "4.0.4" http: - dependency: transitive + dependency: "direct main" description: name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "0.13.6" http_parser: dependency: transitive description: @@ -115,6 +240,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" leak_tracker: dependency: transitive description: @@ -243,6 +376,62 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + sha256: "95f9997ca1fb9799d494d0cb2a780fd7be075818d59f00c43832ed112b158a82" + url: "https://pub.dev" + source: hosted + version: "2.3.3" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 + url: "https://pub.dev" + source: hosted + version: "2.4.3" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" + url: "https://pub.dev" + source: hosted + version: "2.4.1" sky_engine: dependency: transitive description: flutter @@ -324,10 +513,18 @@ packages: dependency: transitive description: name: web - sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "0.5.1" + win32: + dependency: transitive + description: + name: win32 + sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a" + url: "https://pub.dev" + source: hosted + version: "5.5.4" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 7dc80f5..6443fd1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,6 +14,11 @@ dependencies: cupertino_icons: ^1.0.6 google_fonts: ^4.0.4 + shared_preferences: ^2.0.15 + http: ^0.13.5 + fluttertoast: ^8.1.2 + flutter_secure_storage: ^9.0.0 + firebase_messaging: ^14.9.1 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8b6d468..39cedd3 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,12 @@ #include "generated_plugin_registrant.h" +#include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + FirebaseCorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); + FlutterSecureStorageWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index b93c4c3..1f5d05f 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,8 @@ # list(APPEND FLUTTER_PLUGIN_LIST + firebase_core + flutter_secure_storage_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST