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