From b161d5b4b502cbc6d632c8424a14a908a8b12129 Mon Sep 17 00:00:00 2001 From: yaso-meth Date: Wed, 11 Sep 2024 11:44:20 +0200 Subject: [PATCH] add platform check & block screenshot if Android or IOS --- Frontend/patient_manager/lib/main.dart | 14 ++++++++++++++ .../lib/pages/authentication/signin.dart | 2 +- Frontend/patient_manager/lib/theme/mihTheme.dart | 16 +++++++++++++++- .../Flutter/GeneratedPluginRegistrant.swift | 2 ++ Frontend/patient_manager/pubspec.lock | 8 ++++++++ Frontend/patient_manager/pubspec.yaml | 1 + 6 files changed, 41 insertions(+), 2 deletions(-) diff --git a/Frontend/patient_manager/lib/main.dart b/Frontend/patient_manager/lib/main.dart index 0a3bae5e..66234ced 100644 --- a/Frontend/patient_manager/lib/main.dart +++ b/Frontend/patient_manager/lib/main.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/env/env.dart'; import 'package:patient_manager/router/routeGenerator.dart'; import 'package:patient_manager/theme/mihTheme.dart'; +import 'package:no_screenshot/no_screenshot.dart'; class MzanziInnovationHub extends StatefulWidget { const MzanziInnovationHub({ @@ -19,6 +20,12 @@ class MzanziInnovationHub extends StatefulWidget { class _MzanziInnovationHubState extends State { late ThemeMode _themeMode; late MyTheme theme; + final _noScreenshot = NoScreenshot.instance; + + void disableScreenshot() async { + bool result = await _noScreenshot.screenshotOff(); + debugPrint('Screenshot Off: $result'); + } Color getPrimany() { return theme.primaryColor(); @@ -47,10 +54,17 @@ class _MzanziInnovationHubState extends State { }); } + void setPlatformSpecificPlugins() { + if (theme.getPlateform() == "Android" || theme.getPlateform() == "IOS") { + disableScreenshot(); + } + } + @override void initState() { _themeMode = ThemeMode.dark; theme = MyTheme(); + setPlatformSpecificPlugins(); theme.mode = "Dark"; super.initState(); } diff --git a/Frontend/patient_manager/lib/pages/authentication/signin.dart b/Frontend/patient_manager/lib/pages/authentication/signin.dart index 68987a01..e18ee970 100644 --- a/Frontend/patient_manager/lib/pages/authentication/signin.dart +++ b/Frontend/patient_manager/lib/pages/authentication/signin.dart @@ -304,7 +304,7 @@ class _SignInState extends State { const SizedBox(height: 10), //Heading Text( - 'Sign In Now', + 'Sign In (${MzanziInnovationHub.of(context)!.theme.getPlateform()})', style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, diff --git a/Frontend/patient_manager/lib/theme/mihTheme.dart b/Frontend/patient_manager/lib/theme/mihTheme.dart index 01802798..885e7237 100644 --- a/Frontend/patient_manager/lib/theme/mihTheme.dart +++ b/Frontend/patient_manager/lib/theme/mihTheme.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'dart:io' show Platform; class MyTheme { late int _mainColor; @@ -9,7 +10,7 @@ class MyTheme { late String mode; late String screenType; late AssetImage loading; - + bool kIsWeb = const bool.fromEnvironment('dart.library.js_util'); // Options:- // f3f9d2 = Cream // f0f0c9 = cream2 @@ -28,6 +29,19 @@ class MyTheme { //_mesColor = 0xffc8c8c8d9; } + String getPlateform() { + if (kIsWeb) { + return "Web"; + } + if (Platform.isAndroid) { + return "Android"; + } else if (Platform.isIOS) { + return "IOS"; + } else { + return "Other"; + } + } + ThemeData getData() { return ThemeData( fontFamily: 'Segoe UI', diff --git a/Frontend/patient_manager/macos/Flutter/GeneratedPluginRegistrant.swift b/Frontend/patient_manager/macos/Flutter/GeneratedPluginRegistrant.swift index 71b7ea6c..b80957e7 100644 --- a/Frontend/patient_manager/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/Frontend/patient_manager/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,6 +8,7 @@ import Foundation import app_links import device_info_plus import google_sign_in_ios +import no_screenshot import path_provider_foundation import shared_preferences_foundation import sign_in_with_apple @@ -18,6 +19,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) + NoScreenshotPlugin.register(with: registry.registrar(forPlugin: "NoScreenshotPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SignInWithApplePlugin.register(with: registry.registrar(forPlugin: "SignInWithApplePlugin")) diff --git a/Frontend/patient_manager/pubspec.lock b/Frontend/patient_manager/pubspec.lock index ddf7b303..19ba1ce0 100644 --- a/Frontend/patient_manager/pubspec.lock +++ b/Frontend/patient_manager/pubspec.lock @@ -688,6 +688,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.27" + no_screenshot: + dependency: "direct main" + description: + name: no_screenshot + sha256: ec3d86d7ee89a09c3a3939c1003012536ba4b3fcb4f8cbd23d87ada595c99258 + url: "https://pub.dev" + source: hosted + version: "0.3.1" package_config: dependency: transitive description: diff --git a/Frontend/patient_manager/pubspec.yaml b/Frontend/patient_manager/pubspec.yaml index d66ad9fc..9f5ef65b 100644 --- a/Frontend/patient_manager/pubspec.yaml +++ b/Frontend/patient_manager/pubspec.yaml @@ -50,6 +50,7 @@ dependencies: gif: ^2.3.0 intl: ^0.19.0 flutter_native_splash: ^2.4.1 + no_screenshot: ^0.3.1 #google_maps_flutter_web: ^0.5.10 url_strategy: ^0.3.0