diff --git a/android/app/build.gradle b/android/app/build.gradle index 86c339e..1ae9218 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -58,7 +58,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "dev.pseudorand.nullpass" - minSdkVersion 18 + minSdkVersion 21 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 6dc169d..36ef7a4 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -12,7 +12,6 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> - + + + android:name="io.flutter.embedding.android.SplashScreenDrawable" + android:resource="@drawable/launch_background" /> + + + + diff --git a/android/app/src/main/kotlin/dev/pseudorand/nullpass/MainActivity.kt b/android/app/src/main/kotlin/dev/pseudorand/nullpass/MainActivity.kt index 967d42f..3b659df 100644 --- a/android/app/src/main/kotlin/dev/pseudorand/nullpass/MainActivity.kt +++ b/android/app/src/main/kotlin/dev/pseudorand/nullpass/MainActivity.kt @@ -5,16 +5,6 @@ package dev.pseudorand.nullpass -import android.os.Bundle -import android.view.WindowManager.LayoutParams +import io.flutter.embedding.android.FlutterActivity -import io.flutter.app.FlutterActivity -import io.flutter.plugins.GeneratedPluginRegistrant - -class MainActivity: FlutterActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - getWindow().addFlags(LayoutParams.FLAG_SECURE) - GeneratedPluginRegistrant.registerWith(this) - } -} +class MainActivity: FlutterActivity() { } diff --git a/android/app/src/main/res/drawable/normal_background.xml b/android/app/src/main/res/drawable/normal_background.xml new file mode 100644 index 0000000..5c682e3 --- /dev/null +++ b/android/app/src/main/res/drawable/normal_background.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index fe1dc4d..75e8aa1 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -10,4 +10,8 @@ Flutter draws its first frame --> @drawable/launch_background + + diff --git a/assets/images/null_iosScaledDown_1500_Transparent.png b/assets/images/null_iosScaledDown_1500_Transparent.png new file mode 100644 index 0000000..4b00af3 Binary files /dev/null and b/assets/images/null_iosScaledDown_1500_Transparent.png differ diff --git a/ios/Podfile b/ios/Podfile index bfe69e1..cc29d50 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -10,85 +10,37 @@ project 'Runner', { 'Release' => :release, } -def parse_KV_file(file, separator='=') - file_abs_path = File.expand_path(file) - if !File.exists? file_abs_path - return []; +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" end - generated_key_values = {} - skip_line_start_symbols = ["#", "/"] - File.foreach(file_abs_path) do |line| - next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } - plugin = line.split(pattern=separator) - if plugin.length == 2 - podname = plugin[0].strip() - path = plugin[1].strip() - podpath = File.expand_path("#{path}", file_abs_path) - generated_key_values[podname] = podpath - else - puts "Invalid plugin specification: #{line}" - end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches end - generated_key_values + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" end -target 'Runner' do - # use_frameworks! - use_modular_headers! - - # Flutter Pod - - copied_flutter_dir = File.join(__dir__, 'Flutter') - copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') - copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') - unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) - # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. - # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. - # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. - - generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') - unless File.exist?(generated_xcode_build_settings_path) - raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) - cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - unless File.exist?(copied_framework_path) - FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) - end - unless File.exist?(copied_podspec_path) - FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) - end - end - - # Keep pod path relative so it can be checked into Podfile.lock. - pod 'Flutter', :path => 'Flutter' +flutter_ios_podfile_setup - # Plugin Pods +target 'Runner' do + use_frameworks! + use_modular_headers! - # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock - # referring to absolute paths on developers' machines. - system('rm -rf .symlinks') - system('mkdir -p .symlinks/plugins') - plugin_pods = parse_KV_file('../.flutter-plugins') - plugin_pods.each do |name, path| - symlink = File.join('.symlinks', 'plugins', name) - File.symlink(path, symlink) - pod name, :path => File.join(symlink, 'ios') - end + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end target 'OneSignalNotificationServiceExtension' do + use_frameworks! pod 'OneSignal', '>= 2.9.3', '< 3.0' end -# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. -install! 'cocoapods', :disable_input_output_paths => true - post_install do |installer| installer.pods_project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings['ENABLE_BITCODE'] = 'NO' - end + flutter_additional_ios_build_settings(target) end end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 95db971..14f24cb 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2,6 +2,7 @@ PODS: - barcode_scan (0.0.1): - Flutter - MTBBarcodeScanner + - SwiftProtobuf - Flutter (1.0.0) - flutter_secure_storage (3.3.1): - Flutter @@ -9,30 +10,25 @@ PODS: - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) - MTBBarcodeScanner (5.0.11) - - OneSignal (2.12.6) - - onesignal_flutter (2.3.4): + - OneSignal (2.16.1) + - onesignal_flutter (2.6.2): - Flutter - - OneSignal (= 2.12.6) - - openpgp (0.0.1): + - OneSignal (= 2.16.1) + - openpgp (0.1.0): - Flutter - path_provider (0.0.1): - Flutter - - path_provider_macos (0.0.1): + - secure_screen_switcher (0.0.1): - Flutter - shared_preferences (0.0.1): - Flutter - - shared_preferences_macos (0.0.1): + - sqflite (0.0.2): - Flutter - - shared_preferences_web (0.0.1): - - Flutter - - sqflite (0.0.1): - - Flutter - - FMDB (~> 2.7.2) + - FMDB (>= 2.7.5) + - SwiftProtobuf (1.12.0) - url_launcher (0.0.1): - Flutter - - url_launcher_macos (0.0.1): - - Flutter - - url_launcher_web (0.0.1): + - vibration (1.7.3): - Flutter DEPENDENCIES: @@ -43,14 +39,11 @@ DEPENDENCIES: - onesignal_flutter (from `.symlinks/plugins/onesignal_flutter/ios`) - openpgp (from `.symlinks/plugins/openpgp/ios`) - path_provider (from `.symlinks/plugins/path_provider/ios`) - - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`) + - secure_screen_switcher (from `.symlinks/plugins/secure_screen_switcher/ios`) - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) - - shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`) - - shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`) - url_launcher (from `.symlinks/plugins/url_launcher/ios`) - - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`) - - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`) + - vibration (from `.symlinks/plugins/vibration/ios`) SPEC REPOS: /~https://github.com/CocoaPods/Specs.git: @@ -58,6 +51,7 @@ SPEC REPOS: trunk: - MTBBarcodeScanner - OneSignal + - SwiftProtobuf EXTERNAL SOURCES: barcode_scan: @@ -72,42 +66,34 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/openpgp/ios" path_provider: :path: ".symlinks/plugins/path_provider/ios" - path_provider_macos: - :path: ".symlinks/plugins/path_provider_macos/ios" + secure_screen_switcher: + :path: ".symlinks/plugins/secure_screen_switcher/ios" shared_preferences: :path: ".symlinks/plugins/shared_preferences/ios" - shared_preferences_macos: - :path: ".symlinks/plugins/shared_preferences_macos/ios" - shared_preferences_web: - :path: ".symlinks/plugins/shared_preferences_web/ios" sqflite: :path: ".symlinks/plugins/sqflite/ios" url_launcher: :path: ".symlinks/plugins/url_launcher/ios" - url_launcher_macos: - :path: ".symlinks/plugins/url_launcher_macos/ios" - url_launcher_web: - :path: ".symlinks/plugins/url_launcher_web/ios" + vibration: + :path: ".symlinks/plugins/vibration/ios" SPEC CHECKSUMS: - barcode_scan: 33f586d02270046fc6559135038b34b5754eaa4f - Flutter: 0e3d915762c693b495b44d77113d4970485de6ec + barcode_scan: a5c27959edfafaa0c771905bad0b29d6d39e4479 + Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb - OneSignal: a6df91542d1cf133b9dd19d89f2b533d8f2d3163 - onesignal_flutter: c542d9b9aa51c1fdaeeab7f1a2b372bf2f02ab67 - openpgp: f6c3bb2caf06a2530b62cea349a4f6524303435f - path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d - path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0 - shared_preferences: 430726339841afefe5142b9c1f50cb6bd7793e01 - shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087 - shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9 - sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0 + OneSignal: 5f6514ec2b931306eb067acb124afbb2e49970af + onesignal_flutter: 260bb95c0a2d791c990c7bd8749525c9834d43fc + openpgp: aa75bd9d3c0c06094db757d495db30aa653d53f5 + path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c + secure_screen_switcher: 953e65ba86395109208878c31991b75623940eee + shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d + sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 + SwiftProtobuf: 4ef85479c18ca85b5482b343df9c319c62bda699 url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef - url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313 - url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c + vibration: b5a33e764c3f609a975b9dca73dce20fdde627dc -PODFILE CHECKSUM: 2f3234d1d0cc2cad2ae3893465ba3a3e4507f2c3 +PODFILE CHECKSUM: 6ce6557101d113b34e828f8a6eeb1552e5ec02d9 -COCOAPODS: 1.9.1 +COCOAPODS: 1.9.3 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 096a047..7c0cbf7 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -7,19 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 147D47E120DABE5986D0AAF1 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6157E01C229FABEA9456B15 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 16D23250CCC39AAC15B914B2 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 65700DDA60B30B4ACC3873CC /* libPods-Runner.a */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; - 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; - 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - C4FEB078B66D8C6099BE5C34 /* libPods-OneSignalNotificationServiceExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 627E81C8123D6FD68EC877F3 /* libPods-OneSignalNotificationServiceExtension.a */; }; + 9A4E513D48D5DF3977C34A53 /* Pods_OneSignalNotificationServiceExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A095B450741EBD2A5526966 /* Pods_OneSignalNotificationServiceExtension.framework */; }; EF879B54240CBD0300EBC6ED /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF879B53240CBD0300EBC6ED /* NotificationService.swift */; }; EF879B58240CBD0300EBC6ED /* OneSignalNotificationServiceExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = EF879B51240CBD0300EBC6ED /* OneSignalNotificationServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ @@ -41,8 +37,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, - 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -66,24 +60,22 @@ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 342671FA982D7F7B3F8B6F1A /* Pods-OneSignalNotificationServiceExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneSignalNotificationServiceExtension.release.xcconfig"; path = "Target Support Files/Pods-OneSignalNotificationServiceExtension/Pods-OneSignalNotificationServiceExtension.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 3EF9C13FE3ED6AC2FA6B061D /* Pods-OneSignalNotificationServiceExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneSignalNotificationServiceExtension.debug.xcconfig"; path = "Target Support Files/Pods-OneSignalNotificationServiceExtension/Pods-OneSignalNotificationServiceExtension.debug.xcconfig"; sourceTree = ""; }; 4F6058EF666934BC93AC21CF /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 54A3ACC952DCEFE2F82D39D3 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 627E81C8123D6FD68EC877F3 /* libPods-OneSignalNotificationServiceExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OneSignalNotificationServiceExtension.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 65700DDA60B30B4ACC3873CC /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7A095B450741EBD2A5526966 /* Pods_OneSignalNotificationServiceExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OneSignalNotificationServiceExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 93528D0227B2D3A156B20F18 /* Pods-OneSignalNotificationServiceExtension.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneSignalNotificationServiceExtension.profile.xcconfig"; path = "Target Support Files/Pods-OneSignalNotificationServiceExtension/Pods-OneSignalNotificationServiceExtension.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D6157E01C229FABEA9456B15 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EF879B51240CBD0300EBC6ED /* OneSignalNotificationServiceExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = OneSignalNotificationServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; EF879B53240CBD0300EBC6ED /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; EF879B55240CBD0300EBC6ED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -96,9 +88,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, - 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, - 16D23250CCC39AAC15B914B2 /* libPods-Runner.a in Frameworks */, + 147D47E120DABE5986D0AAF1 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -106,7 +96,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4FEB078B66D8C6099BE5C34 /* libPods-OneSignalNotificationServiceExtension.a in Frameworks */, + 9A4E513D48D5DF3977C34A53 /* Pods_OneSignalNotificationServiceExtension.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -116,8 +106,8 @@ 186455A9B6C5BD8C213AB2E2 /* Frameworks */ = { isa = PBXGroup; children = ( - 627E81C8123D6FD68EC877F3 /* libPods-OneSignalNotificationServiceExtension.a */, - 65700DDA60B30B4ACC3873CC /* libPods-Runner.a */, + 7A095B450741EBD2A5526966 /* Pods_OneSignalNotificationServiceExtension.framework */, + D6157E01C229FABEA9456B15 /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; @@ -125,9 +115,7 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( - 3B80C3931E831B6300D905FE /* App.framework */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEBA1CF902C7004384FC /* Flutter.framework */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 9740EEB31CF90195004384FC /* Generated.xcconfig */, @@ -346,7 +334,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -390,9 +378,34 @@ files = ( ); inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", + "${BUILT_PRODUCTS_DIR}/MTBBarcodeScanner/MTBBarcodeScanner.framework", + "${BUILT_PRODUCTS_DIR}/SwiftProtobuf/SwiftProtobuf.framework", + "${BUILT_PRODUCTS_DIR}/barcode_scan/barcode_scan.framework", + "${BUILT_PRODUCTS_DIR}/flutter_secure_storage/flutter_secure_storage.framework", + "${BUILT_PRODUCTS_DIR}/openpgp/openpgp.framework", + "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework", + "${BUILT_PRODUCTS_DIR}/secure_screen_switcher/secure_screen_switcher.framework", + "${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework", + "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", + "${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework", + "${BUILT_PRODUCTS_DIR}/vibration/vibration.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MTBBarcodeScanner.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftProtobuf.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/barcode_scan.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_secure_storage.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/openpgp.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secure_screen_switcher.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/vibration.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -451,7 +464,6 @@ /* Begin XCBuildConfiguration section */ 249021D3217E4FDB00AE95B9 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -530,7 +542,6 @@ }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; @@ -586,7 +597,6 @@ }; 97C147041CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 7e8647e..70693e4 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -10,16 +10,4 @@ import Flutter GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } - - override func applicationWillResignActive( - _ application: UIApplication - ) -> Void { - self.window.isHidden = true - } - - override func applicationDidBecomeActive( - _ application: UIApplication - ) -> Void { - self.window.isHidden = false - } } diff --git a/lib/common.dart b/lib/common.dart index 3405441..2194e0d 100644 --- a/lib/common.dart +++ b/lib/common.dart @@ -9,7 +9,7 @@ import 'package:flutter/material.dart'; import 'package:nullpass/models/secret.dart'; import 'package:nullpass/services/notificationManager.dart' as np; import 'package:shared_preferences/shared_preferences.dart'; -// import 'package:vibration/vibration.dart'; +import 'package:vibration/vibration.dart'; /* VARIABLES */ // TODO: Determine a better way to handle the OneSignal Key @@ -80,13 +80,11 @@ void showSnackBar(GlobalKey scaffoldKey, String text, {bool vibrate = true, int vibrateDuration = 5}) async { scaffoldKey.currentState.showSnackBar( SnackBar(content: Text(text), duration: Duration(milliseconds: 1000))); - /* var hasVibrator = await Vibration.hasVibrator(); if (vibrate && hasVibrator) { // if (Vibration.hasVibrator()) Vibration.vibrate(duration: vibrateDuration); } - */ } String base64EncodeString(String input) => base64.encode(utf8.encode(input)); diff --git a/lib/main.dart b/lib/main.dart index e80fe0c..f7e4e17 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,6 +5,10 @@ import 'package:flutter/material.dart'; import 'package:nullpass/screens/app.dart'; +import 'package:secure_screen_switcher/secure_screen_switcher.dart'; - -void main() => runApp(NullPassApp()); \ No newline at end of file +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + await SecureScreenSwitcher.secureApp(); + runApp(NullPassApp()); +} diff --git a/lib/screens/devices/scanQrCode.dart b/lib/screens/devices/scanQrCode.dart index cd6034b..d31acf4 100644 --- a/lib/screens/devices/scanQrCode.dart +++ b/lib/screens/devices/scanQrCode.dart @@ -341,7 +341,32 @@ class _QrScannerState extends State { Future scan() async { try { _initiated = false; - String barcode = await BarcodeScanner.scan(); + var scanResult = await BarcodeScanner.scan(); + if (scanResult.type != ResultType.Barcode) { + if (scanResult.type == ResultType.Error) { + throw Exception("The barcode scan returned an error:\n" + + "Raw Content - ${scanResult.rawContent}" + + "Scan Result - $scanResult"); + } + if (scanResult.type == ResultType.Cancelled) { + throw FormatException("The scan was cancelled:\n" + + "Raw Content - ${scanResult.rawContent}" + + "Scan Result - $scanResult"); + } + throw Exception("The barcode was not scanned:\n" + + "Raw Content - ${scanResult.rawContent}" + + "Scan Result - $scanResult"); + } + + if (scanResult.format != BarcodeFormat.qr) { + throw BarcodeFormatError("The barcode scanned was invalid:\n" + + "Format Type - ${scanResult.format.name}\n" + + "Format Note - ${scanResult.formatNote}\n" + + "Raw Content - ${scanResult.rawContent}" + + "Scan Result - $scanResult"); + } + + String barcode = scanResult.rawContent; Log.debug(barcode); var qrd = jsonDecode(barcode); var tmpData = QrData.fromMap(qrd); @@ -365,7 +390,7 @@ class _QrScannerState extends State { this._barcodeData = ""; }); } on PlatformException catch (e) { - if (e.code == BarcodeScanner.CameraAccessDenied) { + if (e.code == BarcodeScanner.cameraAccessDenied) { setState(() { this._errorText = "The user did not grant the camera permission!"; this._barcodeData = ""; @@ -392,3 +417,17 @@ class _QrScannerState extends State { } } } + +class BarcodeFormatError implements Exception { + final dynamic message; + + BarcodeFormatError([this.message]); + + String toString() { + if (this.message == null || + (this.message is String && this.message.trim().isEmpty)) { + return "BarcodeFormatError"; + } + return "BarcodeFormatError: ${this.message}"; + } +} diff --git a/lib/screens/secrets/secretView.dart b/lib/screens/secrets/secretView.dart index f018e94..cb6bcb9 100644 --- a/lib/screens/secrets/secretView.dart +++ b/lib/screens/secrets/secretView.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:google_fonts/google_fonts.dart'; import 'package:nullpass/common.dart'; import 'package:nullpass/models/auditRecord.dart'; import 'package:nullpass/models/secret.dart'; @@ -396,7 +397,7 @@ class SecretPreview extends StatelessWidget { sList.add(new TextSpan( text: character, - style: TextStyle( + style: GoogleFonts.robotoMono( fontWeight: FontWeight.bold, color: textColor, fontSize: sharedPrefs.getInt(PasswordPreviewSizePrefKey).toDouble(), diff --git a/pubspec.lock b/pubspec.lock index 665a7bf..0f1a10c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -15,48 +15,76 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.5.2" + asn1lib: + dependency: transitive + description: + name: asn1lib + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.5" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.4.0" + version: "2.5.0-nullsafety.3" barcode_scan: dependency: "direct main" description: name: barcode_scan url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "3.0.1" + basic_utils: + dependency: transitive + description: + name: basic_utils + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "2.1.0-nullsafety.3" cached_network_image: dependency: "direct main" description: name: cached_network_image url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.3.3" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0-nullsafety.5" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" + version: "1.2.0-nullsafety.3" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0-nullsafety.3" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.11" + version: "1.15.0-nullsafety.5" convert: dependency: transitive description: @@ -85,18 +113,53 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.2" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0-nullsafety.3" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.1" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.11" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" + flutter_blurhash: + dependency: transitive + description: + name: flutter_blurhash + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0" flutter_cache_manager: dependency: transitive description: name: flutter_cache_manager url: "https://pub.dartlang.org" source: hosted - version: "1.1.3" + version: "2.0.0" flutter_launcher_icons: dependency: "direct dev" description: @@ -110,7 +173,7 @@ packages: name: flutter_secure_storage url: "https://pub.dartlang.org" source: hosted - version: "3.3.1+1" + version: "3.3.5" flutter_test: dependency: "direct dev" description: flutter @@ -134,7 +197,14 @@ packages: name: font_awesome_flutter url: "https://pub.dartlang.org" source: hosted - version: "8.7.0" + version: "8.10.0" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" html: dependency: transitive description: @@ -148,7 +218,7 @@ packages: name: http url: "https://pub.dartlang.org" source: hosted - version: "0.12.0+2" + version: "0.12.2" http_parser: dependency: transitive description: @@ -163,62 +233,97 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.4" + intl: + dependency: transitive + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.16.1" js: dependency: transitive description: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.1+1" + version: "0.6.3-nullsafety.3" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.4" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.6" + version: "0.12.10-nullsafety.3" material_design_icons_flutter: dependency: "direct main" description: name: material_design_icons_flutter url: "https://pub.dartlang.org" source: hosted - version: "4.0.5045" + version: "4.0.5755" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.8" + version: "1.3.0-nullsafety.6" + octo_image: + dependency: transitive + description: + name: octo_image + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.0" onesignal_flutter: dependency: "direct main" description: name: onesignal_flutter url: "https://pub.dartlang.org" source: hosted - version: "2.3.4" + version: "2.6.2" openpgp: dependency: "direct main" description: name: openpgp url: "https://pub.dartlang.org" source: hosted - version: "0.8.2" + version: "0.9.9" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.4" + version: "1.8.0-nullsafety.3" path_provider: dependency: "direct main" description: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "1.6.5" + version: "1.6.24" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+2" path_provider_macos: dependency: transitive description: @@ -232,7 +337,14 @@ packages: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.4" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+3" pedantic: dependency: transitive description: @@ -261,6 +373,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.2" + pointycastle: + dependency: transitive + description: + name: pointycastle + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.13" + protobuf: + dependency: transitive + description: + name: protobuf + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" qr: dependency: transitive description: @@ -282,13 +415,43 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.5" + random_string: + dependency: transitive + description: + name: random_string + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + rxdart: + dependency: transitive + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.24.1" + secure_screen_switcher: + dependency: "direct main" + description: + path: "." + ref: main + resolved-ref: e9c58adebb2f43a77ad442e24f56b263b4dd27ca + url: "git@github.com:pseudorand-dev/secure_screen_switcher.git" + source: git + version: "0.0.1+1" shared_preferences: dependency: "direct main" description: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "0.5.6+3" + version: "0.5.12+4" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.2+4" shared_preferences_macos: dependency: transitive description: @@ -310,6 +473,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.2+4" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+3" sky_engine: dependency: transitive description: flutter @@ -321,42 +491,42 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.5.5" + version: "1.8.0-nullsafety.4" sqflite: dependency: "direct main" description: name: sqflite url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.3.2+1" sqflite_common: dependency: transitive description: name: sqflite_common url: "https://pub.dartlang.org" source: hosted - version: "1.0.0+1" + version: "1.0.2+1" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.9.3" + version: "1.10.0-nullsafety.6" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0-nullsafety.3" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "1.1.0-nullsafety.3" synchronized: dependency: transitive description: @@ -370,14 +540,14 @@ packages: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0-nullsafety.3" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.11" + version: "0.2.19-nullsafety.6" timeline_list: dependency: "direct main" description: @@ -391,14 +561,21 @@ packages: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.3.0-nullsafety.5" url_launcher: dependency: "direct main" description: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "5.4.5" + version: "5.7.10" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+4" url_launcher_macos: dependency: transitive description: @@ -412,42 +589,77 @@ packages: name: url_launcher_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.6" + version: "1.0.9" url_launcher_web: dependency: transitive description: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "0.1.1+1" + version: "0.1.5+1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+3" uuid: dependency: "direct main" description: name: uuid url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.2.2" validators: dependency: "direct main" description: name: validators url: "https://pub.dartlang.org" source: hosted - version: "2.0.0+1" + version: "2.0.1" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.1.0-nullsafety.5" vibration: dependency: "direct main" description: name: vibration url: "https://pub.dartlang.org" source: hosted - version: "1.2.4" + version: "1.7.3" + vibration_web: + dependency: transitive + description: + name: vibration_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.2" + vin_decoder: + dependency: transitive + description: + name: vin_decoder + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.3" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" xml: dependency: transitive description: @@ -463,5 +675,5 @@ packages: source: hosted version: "2.2.0" sdks: - dart: ">=2.7.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + dart: ">=2.12.0-0.0 <3.0.0" + flutter: ">=1.22.2 <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index cedf0de..6b4ddea 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,7 @@ name: nullpass -description: NullPass port from react native to flutter +description: NullPass password manager + +publish_to: none # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 @@ -19,23 +21,28 @@ environment: dependencies: flutter: sdk: flutter - barcode_scan: ^2.0.1 - cached_network_image: ^2.0.0 - flutter_secure_storage: ^3.3.1+1 + barcode_scan: ^3.0.1 + cached_network_image: ^2.3.3 + flutter_secure_storage: ^3.3.5 flutter_widgets: ^0.1.12 - font_awesome_flutter: ^8.7.0 - material_design_icons_flutter: ^4.0.5045 - onesignal_flutter: ^2.2.0 - openpgp: ^0.8.2 - path_provider: ^1.6.5 + font_awesome_flutter: ^8.10.0 + google_fonts: ^1.1.1 + material_design_icons_flutter: ^4.0.5755 + onesignal_flutter: ^2.6.2 + openpgp: ^0.9.9 + path_provider: ^1.6.24 qr_flutter: ^3.2.0 - shared_preferences: ^0.5.6+3 - sqflite: ^1.3.0 + secure_screen_switcher: + git: + url: git@github.com:pseudorand-dev/secure_screen_switcher.git + ref: main + shared_preferences: ^0.5.12+4 + sqflite: ^1.3.2+1 timeline_list: ^0.0.5 - url_launcher: ^5.4.5 - uuid: ^2.0.1 - validators: ^2.0.0+1 - vibration: ^1.2.2 + url_launcher: ^5.7.10 + uuid: ^2.2.2 + validators: ^2.0.1 + vibration: ^1.7.2 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. @@ -52,44 +59,10 @@ flutter_icons: image_path_ios: "assets/images/null_iosScaledDown_1500_Transparent.png" image_path_android: "assets/images/null_iosScaledDown_1500_Transparent.png" -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter. flutter: - + assets: + - assets/images/ # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true - - # To add assets to your application, add an assets section, like this: - assets: - - assets/images/ - - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware. - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages