From dc3bfbbaaaf1bbff178476f15019162977d11480 Mon Sep 17 00:00:00 2001 From: Juki-shiba Date: Fri, 21 Feb 2025 15:23:35 +0530 Subject: [PATCH] bug fix & share cont --- .../Screens/charts/screens/chart_screen.dart | 104 ++++++++---------- .../drawer_routes/custom_drawer_routes.dart | 19 +++- macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 24 ++++ pubspec.yaml | 2 +- 5 files changed, 86 insertions(+), 65 deletions(-) diff --git a/lib/presentation/Screens/charts/screens/chart_screen.dart b/lib/presentation/Screens/charts/screens/chart_screen.dart index 9a302399..60b660c8 100644 --- a/lib/presentation/Screens/charts/screens/chart_screen.dart +++ b/lib/presentation/Screens/charts/screens/chart_screen.dart @@ -2086,66 +2086,14 @@ class _ChartScreen1State extends ConsumerState { ), SizedBox(width: 5), GestureDetector( - onTap: () async { - try { - // Define share content - final String shareLink = 'https://fcsc-da580.web.app'; // Your link - final String shareText = 'Check this out!'; - final String svgAssetPath = 'assets/logos/fcsc.png'; // Your SVG asset path - - // Create a controller to capture the SVG as an image - final screenshotController = ScreenshotController(); - - // Render the SVG off-screen and capture it as PNG - final svgWidget = SvgPicture.asset( - svgAssetPath, - width: 200, // Adjust size as needed - height: 200, - ); - - // Capture the SVG as a PNG - final Uint8List? capturedImage = await screenshotController.captureFromWidget( - Material( - child: svgWidget, - ), - ); - - if (capturedImage == null) { - throw Exception('Failed to capture SVG as image'); - } - - // Save the captured PNG to a temporary file - final directory = await getTemporaryDirectory(); - final file = File('${directory.path}/shared_image.png'); - await file.writeAsBytes(capturedImage); - - // Share the PNG file with text and link - await Share.shareXFiles( - [XFile(file.path)], - text: '$shareText\n$shareLink', - subject: 'Shared Content', - ); - - // Clean up temporary file - await file.delete(); - } catch (e) { - print("Error sharing file: $e"); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text('Error sharing: $e')), - ); - } - }, - child: Container( + onTap: () => shareCurrentPage(context), + child: SvgPicture.asset( + UaeNumbersAssetPath.share, + semanticsLabel: 'share', width: 24, height: 24, - child: Icon( - Icons.share, - color: Colors.white, - size: 24, - semanticLabel: 'Share', - ), - ), - ), + ) + ), ], ), SizedBox( @@ -2741,7 +2689,47 @@ class _ChartScreen1State extends ConsumerState { ); } } +Future shareCurrentPage(BuildContext context) async { + try { + // Get current route from go_router + final String currentRoute = GoRouterState.of(context).uri.toString(); + final String baseAppLink = 'https://fcsc-da580.web.app'; + final String shareLink = '$baseAppLink$currentRoute'; + final String shareText = 'Check this out!'; + final String svgAssetPath = 'assets/logos/fcsc.png'; + final screenshotController = ScreenshotController(); + final svgWidget = SvgPicture.asset( + svgAssetPath, + width: 200, + height: 200, + ); + final Uint8List? capturedImage = await screenshotController.captureFromWidget( + Material(child: svgWidget), + ); + + if (capturedImage == null) { + throw Exception('Failed to capture SVG as image'); + } + + final directory = await getTemporaryDirectory(); + final file = File('${directory.path}/shared_image.png'); + await file.writeAsBytes(capturedImage); + + await Share.shareXFiles( + [XFile(file.path)], + text: '$shareText\n$shareLink', + subject: 'Shared Content', + ); + + await file.delete(); + } catch (e) { + print("Error sharing file: $e"); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Error sharing: $e')), + ); + } +} // Function to convert hex color string to Color Color _getColorFromHex(String hexColor) { hexColor = hexColor.replaceFirst('#', ''); diff --git a/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart b/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart index 28f1152c..5e4b33a5 100644 --- a/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart +++ b/lib/presentation/routes/drawer_routes/custom_drawer_routes.dart @@ -1078,12 +1078,12 @@ class _BaseScaffoldState extends ConsumerState { } } } -void _showLogoutConfirmationDialog(context) { +void _showLogoutConfirmationDialog(BuildContext context) { double myheight = MediaQuery.of(context).size.height; showDialog( context: context, barrierDismissible: false, // User must tap a button to dismiss dialog - builder: (context) => AlertDialog( + builder: (dialogContext) => AlertDialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(5.0), // Rounded corners ), @@ -1113,7 +1113,7 @@ void _showLogoutConfirmationDialog(context) { SizedBox( width: 120, // Set button width child: TextButton( - onPressed: () => Navigator.pop(context), + onPressed: () => Navigator.pop(dialogContext), style: TextButton.styleFrom( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10.0), @@ -1135,9 +1135,9 @@ void _showLogoutConfirmationDialog(context) { SizedBox( width: 120, // Set button width child: TextButton( - onPressed: () { - Navigator.pop(context); - // Add logout function here + onPressed: () async { + await logout(dialogContext); // Pass dialogContext to logout + Navigator.pop(dialogContext); // Close the dialog }, style: TextButton.styleFrom( backgroundColor: Color(0xFFAA8E83), // Background color @@ -1160,3 +1160,10 @@ void _showLogoutConfirmationDialog(context) { ); } +Future logout(BuildContext context) async { + final prefs = await SharedPreferences.getInstance(); + await prefs.clear(); // Clear shared preferences + context.go('/login'); // Navigate to the root route (e.g., login screen) +} + + diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 761e0b22..0c4642aa 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,6 +7,7 @@ import Foundation import connectivity_plus import file_selector_macos +import firebase_core import flutter_secure_storage_macos import package_info_plus import path_provider_foundation @@ -19,6 +20,7 @@ import webview_flutter_wkwebview func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) diff --git a/pubspec.lock b/pubspec.lock index a90e1d09..d2c5cc87 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -421,6 +421,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.3+3" + firebase_core: + dependency: "direct main" + 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: d7253d255ff10f85cfd2adaba9ac17bae878fa3ba577462451163bd9f1d1f0bf + url: "https://pub.dev" + source: hosted + version: "5.4.0" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + sha256: e47f5c2776de018fa19bc9f6f723df136bc75cdb164d64b65305babd715c8e41 + url: "https://pub.dev" + source: hosted + version: "2.21.0" fixnum: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 76c44216..d955702d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,7 +34,7 @@ dependencies: csv: ^6.0.0 excel: ^4.0.2 intl: ^0.19.0 - # firebase_core: ^2.27.0 + firebase_core: ^2.27.0 the_validator: ^2.0.0 pocketbase: ^0.18.1 flutter_secure_storage: ^9.0.0