first commit

This commit is contained in:
poojakhatawate 2024-04-12 10:53:32 +05:30
commit 68d7cc37d2
9832 changed files with 1144505 additions and 0 deletions

44
.gitignore vendored Normal file
View File

@ -0,0 +1,44 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release

45
.metadata Normal file
View File

@ -0,0 +1,45 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
version:
revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
- platform: android
create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
- platform: ios
create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
- platform: linux
create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
- platform: macos
create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
- platform: web
create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
- platform: windows
create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

29
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,29 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "flutter_passvault",
"request": "launch",
"type": "dart",
"args": [
"--web-port",
"8080",
]
},
{
"name": "flutter_passvault (profile mode)",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "flutter_passvault (release mode)",
"request": "launch",
"type": "dart",
"flutterMode": "release"
}
]
}

16
README.md Normal file
View File

@ -0,0 +1,16 @@
# flutter_passvault
A new Flutter project.
## Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
For help getting started with Flutter development, view the
[online documentation](https://docs.flutter.dev/), which offers tutorials,
samples, guidance on mobile development, and a full API reference.

29
analysis_options.yaml Normal file
View File

@ -0,0 +1,29 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

13
android/.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
key.properties
**/*.keystore
**/*.jks

77
android/app/build.gradle Normal file
View File

@ -0,0 +1,77 @@
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
namespace "com.example.flutter_passvault"
compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.flutter_passvault"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 21
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation platform('com.google.firebase:firebase-bom:28.2.1')
implementation 'com.google.firebase:firebase-analytics-ktx'
}

View File

@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "973222359655",
"project_id": "novunotification",
"storage_bucket": "novunotification.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:973222359655:android:4c9dfab71d40e3e7015ac2",
"android_client_info": {
"package_name": "com.example.flutter_passvault"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyAVgtz1omtgHHOWd5mZq74H844nhuH1eEI"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

View File

@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -0,0 +1,51 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" />
<application
android:label="Passvault"
android:name=".Application"
android:usesCleartextTraffic="true"
android:icon="@mipmap/newappicon">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="high_importance_channel"
/>
</application>
</manifest>

View File

@ -0,0 +1,18 @@
package com.example.flutter_passvault
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
import io.flutter.view.FlutterMain
import io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingBackgroundService;
class Application : FlutterApplication(), PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
FlutterMain.startInitialization(this)
}
override fun registerWith(registry: PluginRegistry) {
}
}

View File

@ -0,0 +1,6 @@
package com.example.flutter_passvault
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -0,0 +1,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

33
android/build.gradle Normal file
View File

@ -0,0 +1,33 @@
buildscript {
ext.kotlin_version = '1.9.22'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.13'
classpath 'com.android.tools.build:gradle:7.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

View File

@ -0,0 +1,3 @@
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true

View File

@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

11
android/settings.gradle Normal file
View File

@ -0,0 +1,11 @@
include ':app'
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"

BIN
assets/aissel_logo.png.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

BIN
assets/user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

34
ios/.gitignore vendored Normal file
View File

@ -0,0 +1,34 @@
**/dgph
*.mode1v3
*.mode2v3
*.moved-aside
*.pbxuser
*.perspectivev3
**/*sync/
.sconsign.dblite
.tags*
**/.vagrant/
**/DerivedData/
Icon?
**/Pods/
**/.symlinks/
profile
xcuserdata
**/.generated/
Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/ephemeral/
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
!default.perspectivev3

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>11.0</string>
</dict>
</plist>

View File

@ -0,0 +1 @@
#include "Generated.xcconfig"

View File

@ -0,0 +1 @@
#include "Generated.xcconfig"

View File

@ -0,0 +1,613 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
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 */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 97C146E61CF9000F007C117D /* Project object */;
proxyType = 1;
remoteGlobalIDString = 97C146ED1CF9000F007C117D;
remoteInfo = Runner;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
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 = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
);
name = Flutter;
sourceTree = "<group>";
};
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
331C807B294A618700263BE5 /* RunnerTests.swift */,
);
path = RunnerTests;
sourceTree = "<group>";
};
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
);
sourceTree = "<group>";
};
97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
331C8081294A63A400263BE5 /* RunnerTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
);
path = Runner;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
331C8080294A63A400263BE5 /* RunnerTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
331C807D294A63A400263BE5 /* Sources */,
331C807E294A63A400263BE5 /* Frameworks */,
331C807F294A63A400263BE5 /* Resources */,
);
buildRules = (
);
dependencies = (
331C8086294A63A400263BE5 /* PBXTargetDependency */,
);
name = RunnerTests;
productName = RunnerTests;
productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
);
buildRules = (
);
dependencies = (
);
name = Runner;
productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
331C8080294A63A400263BE5 = {
CreatedOnToolsVersion = 14.0;
TestTargetID = 97C146ED1CF9000F007C117D;
};
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 97C146E51CF9000F007C117D;
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
331C8080294A63A400263BE5 /* RunnerTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
331C807F294A63A400263BE5 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
331C807D294A63A400263BE5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 97C146ED1CF9000F007C117D /* Runner */;
targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C146FB1CF9000F007C117D /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
249021D3217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Profile;
};
249021D4217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPassvault;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = AE0B7B92F70575B8D7E0D07E /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPassvault.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Debug;
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 89B67EB44CE7B6631473024E /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPassvault.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Release;
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 640959BDD8F10B91D80A66BE /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPassvault.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Profile;
};
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
97C147061CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPassvault;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
};
97C147071CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPassvault;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
331C8088294A63A400263BE5 /* Debug */,
331C8089294A63A400263BE5 /* Release */,
331C808A294A63A400263BE5 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147031CF9000F007C117D /* Debug */,
97C147041CF9000F007C117D /* Release */,
249021D3217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147061CF9000F007C117D /* Debug */,
97C147071CF9000F007C117D /* Release */,
249021D4217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "331C8080294A63A400263BE5"
BuildableName = "RunnerTests.xctest"
BlueprintName = "RunnerTests"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -0,0 +1,13 @@
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}

View File

@ -0,0 +1,122 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 704 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

View File

@ -0,0 +1,5 @@
# Launch Screen Assets
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_KEY</key>
<string>AIzaSyD9Sr-h9qEv2t_DEaXprCnBmPDEzxMCqaY</string>
<key>GCM_SENDER_ID</key>
<string>973222359655</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.example.flutterPassvault</string>
<key>PROJECT_ID</key>
<string>novunotification</string>
<key>STORAGE_BUCKET</key>
<string>novunotification.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:973222359655:ios:a689abf0ffaf68d3015ac2</string>
</dict>
</plist>

51
ios/Runner/Info.plist Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Flutter Passvault</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>flutter_passvault</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1 @@
#import "GeneratedPluginRegistrant.h"

View File

@ -0,0 +1,12 @@
import Flutter
import UIKit
import XCTest
class RunnerTests: XCTestCase {
func testExample() {
// If you add code to the Runner application, consider adding tests here.
// See https://developer.apple.com/documentation/xctest for more information about using XCTest.
}
}

View File

@ -0,0 +1,7 @@
{
"file_generated_by": "FlutterFire CLI",
"purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
"GOOGLE_APP_ID": "1:973222359655:ios:a689abf0ffaf68d3015ac2",
"FIREBASE_PROJECT_ID": "novunotification",
"GCM_SENDER_ID": "973222359655"
}

View File

@ -0,0 +1,10 @@
import 'dart:async';
import 'package:connectivity_plus/connectivity_plus.dart';
class NetworkConnectivity {
Future<bool> isInternetAvailable() async {
var connectivityResult = await (Connectivity().checkConnectivity());
return connectivityResult != ConnectivityResult.none;
}
}

View File

@ -0,0 +1,95 @@
import 'package:dio/dio.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/modelclasses/my_credential_model.dart';
import 'package:flutter_passvault/hive_storage/store_credential_model.dart';
import 'package:flutter_passvault/view_pages/shared_preferance.dart';
import 'package:hive/hive.dart';
class CredentialService {
final Dio dio = Dio();
final Box<Storedcredential> hivebox =
Hive.box<Storedcredential>('credentialListBox');
int? autoIncrementKey;
int i = 0;
Future<List<CredentialList>> getAll() async {
String? value = await CustomSharedPreferences.getCustomValue();
print("AuthMy_credential: $value");
dio.options.headers["Authorization"] = 'Bearer $value';
try {
final response = await dio.get("${ApiConstants.newKonectarurl}/creds");
if (response.statusCode == 200) {
final jsonData = response.data as Map<String, dynamic>;
print("AuthMy_credential_jsonData: $jsonData");
final messageList = List<Map<String, dynamic>>.from(jsonData['data']);
print("AuthMy_credential_jsonDatamessageList: $messageList");
final fetchedMessages =
messageList.map((json) => CredentialList.fromJson(json)).toList();
print("fetchedMyCredential_is : $fetchedMessages");
print(fetchedMessages);
// await hivebox.clear();
int currentIndex = hivebox.length;
for (final item in fetchedMessages) {
print("currentIndex_is : $currentIndex");
autoIncrementKey = await getNextAutoIncrementValue();
final data = Storedcredential(
id: currentIndex,
name: item.name,
username: item.username,
password: item.password,
detail: item.detail,
createdBy: item.createdBy,
modifiedBy: item.modifiedBy,
createdAt: item.createdAt,
updatedAt: item.updatedAt,
isOfflinecreated: false,
isOfflineupdate: false,
isOfflinedelete: false,
isOfflineshare: false,
issync: true,
uid: item.id,
sharedUserIds: [],
DeletedUserIds: []);
//.toList();
await hivebox.put(currentIndex, data);
currentIndex++;
}
return fetchedMessages.reversed.toList();
}
} catch (error) {
print('Failed : $error');
}
return [];
}
Future<int> getNextAutoIncrementValue() async {
var counterBox = await Hive.openBox<int>('counterBox');
if (!counterBox.containsKey('counter')) {
counterBox.put('counter', 0);
}
int? counter = counterBox.get('counter');
counterBox.put('counter', counter! + 1);
await counterBox.close();
return counter;
}
}

View File

@ -0,0 +1,82 @@
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/modelclasses/add_credential_model.dart';
import 'package:flutter_passvault/hive_storage/store_credential_model.dart';
import 'package:flutter_passvault/view_pages/shared_preferance.dart';
import 'package:hive/hive.dart';
class AddCredentialProvider extends ChangeNotifier {
final dio = Dio();
AddCredentialsModel? _serverResponse;
AddCredentialsModel? get success => _serverResponse;
Future<void> postcredential() async {
final Box<Storedcredential> hivebox =
Hive.box<Storedcredential>('credentialListBox');
var allRecords = hivebox.values.toList();
var unsyncedRecords = allRecords
.where((record) =>
record.issync == false && record.isOfflinecreated == true)
.toList();
print("Stored_added_unsyncedRecords : $unsyncedRecords");
for (var record in unsyncedRecords) {
final Map<String, dynamic> senddata = {
'username': record.username,
'password': record.password,
'name': record.name,
'detail': record.detail
};
print("senddd_offline_data_iss: $senddata");
String? token = await CustomSharedPreferences.getCustomValue();
print("senddd_offline_token: $token");
dio.options.headers['Authorization'] = 'Bearer $token';
try {
final response = await dio.post("${ApiConstants.newKonectarurl}/creds",
data: senddata);
if (response.statusCode == 200) {
print('Neww added successful');
print(response.data);
print(response.data['message']);
print(response.data['data']);
print(response.data['data']['id']);
record.issync = true;
record.isOfflinecreated = false;
record.uid = response.data['data']['id'];
await hivebox.put(record.id, record);
print("update: ${record.uid}");
final addedList = AddCredentialsModel.fromJson(response.data);
_serverResponse = addedList;
// notifyListeners();
} else {
record.issync = false;
record.isOfflinecreated = true;
await hivebox.put(record.id, record);
}
} catch (error) {
// ignore: use_rethrow_when_possible
throw error;
}
}
}
}

View File

@ -0,0 +1,416 @@
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/hive_storage/add_creds_offline.dart';
import 'package:flutter_passvault/hive_storage/store_credential_model.dart';
import 'package:flutter_passvault/modelclasses/usr_list_model.dart';
import 'package:flutter_passvault/modelclasses/view_credential_model.dart';
import 'package:flutter_passvault/view_pages/shared_preferance.dart';
import 'package:hive/hive.dart';
class APIProvider with ChangeNotifier {
final Dio dio = Dio();
final Box<Addofflinecredential> hivestoredbox =
Hive.box<Addofflinecredential>('offlinedata');
final Box<Storedcredential> hivestoredboxstoreshare =
Hive.box<Storedcredential>('credentialListBox');
List<Message> _messages = [];
List<User> _viewmessages = [];
List<int> viewcheckedid = [];
final List<Message> _comparedata = [];
bool isLoading = true;
List<Message> get messages => _messages;
List<User> get viewmessages => _viewmessages;
List<Message> get comparedata => _comparedata;
set messages(List<Message> messages) {
_messages = messages;
notifyListeners();
}
void selectAllMessages(bool isSelected) {
for (var message in _messages) {
if (message.isEnabled == false) {
message.isChecked = isSelected;
}
}
notifyListeners();
}
List<Message> getSelectedMessages() {
return _messages.where((message) => message.isChecked).toList();
}
void updateMessageCheckedStatus(int index, bool isChecked) {
_messages[index].isChecked = isChecked;
notifyListeners();
}
Future<void> fetchMessages() async {
String? keyToken = await CustomSharedPreferences.getCustomValue();
List<Addofflinecredential> newdata = [];
print("userList: $keyToken");
dio.options.headers["Authorization"] = 'Bearer $keyToken';
try {
final response = await dio.post("${ApiConstants.newKonectarurl}/users");
final jsonData = response.data as Map<String, dynamic>;
print("Api_Data : ${response.data}");
final messageList = List<Map<String, dynamic>>.from(jsonData['data']);
print("messageList_is : $messageList");
final List<Addofflinecredential> data1 = messageList
.map((json) => Addofflinecredential(json['name'], json['id'], false))
.toList();
print("Storing_hove_data: $messageList");
var existingData = hivestoredbox.values.toList();
print("existingKeys data_is : $existingData");
// Filter out the new data that doesn't already exist in Hive
var newDataToAdd = messageList.where((newUserData) {
var isNew = !existingData.any(
(existingUserData) => existingUserData.usrid == newUserData['id']);
print("isNew_is : $isNew");
return isNew;
}).toList();
for (var data in newDataToAdd) {
print("new_hive data_is : $data");
print("new_hive data_is1 : ${data['key']}");
final List<Addofflinecredential> data11 = newDataToAdd
.map(
(json) => Addofflinecredential(json['name'], json['id'], false))
.toList();
print("new_hive data_is_data1 : $data11");
newdata = data11;
}
print("new_inserted_data_is: $newdata");
await hivestoredbox.addAll(newdata);
if (hivestoredbox.isEmpty) {
await hivestoredbox.addAll(data1);
} else {
List<Addofflinecredential> hiveData = hivestoredbox.values.toList();
List<Addofflinecredential> dataToDelete = hiveData
.where((hiveItem) =>
!messageList.any((apiItem) => apiItem['id'] == hiveItem.usrid))
.toList();
for (var item in dataToDelete) {
print("Delting_data_isss ${item.key}");
print("Delting_data_isss1 ${item.usrid} ${item.username}");
hivestoredbox.delete(item.key);
}
}
notifyListeners();
} catch (error) {
print('Error: $error');
}
notifyListeners();
}
Future<void> getcredential1() async {
print("getting _user_info_credential");
var allRecords = hivestoredboxstoreshare.values.toList();
print("hive_Stored_data_forshare : $allRecords");
var unsyncedsharesRecords =
allRecords.where((record) => record.issync == true).toList();
print("Stored_unsyncedsharesRecords : $unsyncedsharesRecords");
for (var record in unsyncedsharesRecords) {
print("unsyncedShareRecords: ${record.id}");
print("unsyncedShareRecords: ${record.name}");
print("unsyncedShareRecords: ${record.uid}");
String? token = await CustomSharedPreferences.getCustomValue();
dio.options.headers['Authorization'] = 'Bearer $token';
try {
dio.options.receiveTimeout =
const Duration(seconds: 5); // 10 seconds timeout
final response = await dio.get(
"${ApiConstants.newKonectarurl}/creds/${record.uid}",
);
if (response.statusCode == 200) {
print('I_am_calling from_getcredential1Neww added successful');
print(response.data);
print(response.data['message']);
print(response.data['data']);
print("response_dataaa_users : ${response.data['data']['users']}");
final jsonData = response.data as Map<String, dynamic>;
final messageList1 =
List<Map<String, dynamic>>.from(jsonData['data']['users']);
print(
"messageList_isNew I_am_calling from_getcredential1 : $messageList1");
final fetchedMessages1 =
messageList1.map((json) => User.fromJson(json)).toList();
print("fetchedMessages1_isss: $fetchedMessages1");
_viewmessages = fetchedMessages1;
List<int> userIds = _viewmessages.map((user) => user.id).toList();
print("userIds_isss: $userIds");
viewcheckedid = userIds;
print("View_resposeeeeeeeeeeeeee_apiprobider: $_viewmessages");
print("viewcheckedid: $viewcheckedid" "${record.uid}");
storeuserid(viewcheckedid, record.uid);
} else {
print('Failed : ${response.statusCode}');
}
} catch (error) {
print('Failed111: $error');
}
}
}
void getCommonItems() {
print("Common_listttL $messages");
print("Common_listtt_viewdata $viewmessages");
for (final item1 in _messages) {
item1.isChecked = viewmessages.any((item2) => item1.id == item2.id);
item1.isEnabled = !item1.isChecked;
}
notifyListeners();
}
void updateMessageCheckedStatus1(Addofflinecredential data) {
data.isChecked = !data.isChecked; // Toggle the checked state
notifyListeners();
}
List<int> getofflineselecteduser(Storedcredential data) {
hivestoredboxstoreshare.put(data.id, data);
final checkedUserIds = <int>[];
for (final data in hivestoredbox.values) {
if (data.isChecked) {
print("user_id_is: ${data.usrid}");
checkedUserIds.add(data.usrid);
}
}
return checkedUserIds;
}
prefiilcheckbox(List<int> selectedid) async {
String? getstoreduserid = await CustomSharedPreferences.getuserid();
for (int i = 0; i < hivestoredbox.length; i++) {
final data = hivestoredbox.getAt(i);
data!.isChecked = false;
hivestoredbox.putAt(i, data);
}
final List<int> dataForIds = [];
final usernameIds = <Addofflinecredential>[];
print("fecth_selected_id: $selectedid");
var allRecords = hivestoredbox.values.toList();
print("fecth_selected_allRecords_id: $allRecords");
for (int i = 0; i < hivestoredbox.length; i++) {
final data = hivestoredbox.getAt(i);
print("Pooja_data: ${data!.username}");
print("Pooja_id: ${data.usrid}");
dataForIds.add(data.usrid);
}
print("fecth_selected_aonly_id: $selectedid");
List<int> commonValues =
dataForIds.where((element) => selectedid.contains(element)).toList();
print("commonValues_iss: $commonValues"); // [4, 21]
commonValues.remove(int.parse(getstoreduserid!));
print("after removeee: $commonValues"); // [4, 21]
for (final id in commonValues) {
print("value_in_common_is :$id");
final data =
hivestoredbox.values.firstWhere((element) => element.usrid == id);
usernameIds.add(data);
}
print("after_usernameIds: $usernameIds"); // [4, 21]
for (var record in usernameIds) {
print("unsyncedRecords: ${record.username}");
print("unsyncedRecords: ${record.isChecked}");
print("unsyncedRecords: ${record.usrid}");
record.isChecked = true;
hivestoredbox.putAt(record.usrid, record);
}
notifyListeners();
}
void storeuserid(List<int> getofflineselecteduser, int? credentialid) async {
print("getofflineselecteduser_isss: $getofflineselecteduser");
print("getofflineselecteduser_isss: $credentialid");
var getall = hivestoredboxstoreshare.values.toList();
print("getall_storeuserid : $getall");
try {
Storedcredential storedDatacid = hivestoredboxstoreshare.values
.firstWhere((element) => element.uid == credentialid);
print(
'Element with ID $credentialid: ${storedDatacid.name}, ${storedDatacid.sharedUserIds}');
storedDatacid.sharedUserIds = getofflineselecteduser;
print("sharedUserIdsonlinee_isss : ${storedDatacid.sharedUserIds}");
print("storedDatacid_api : $storedDatacid,$credentialid");
await hivestoredboxstoreshare.put(credentialid!, storedDatacid);
// getAllDataFromHive();
} catch (e) {
print('Element with ID $credentialid not found');
}
Storedcredential storedDatacid11 = hivestoredboxstoreshare.values
.firstWhere((element) => element.uid == credentialid);
print('485 with ID ${storedDatacid11.sharedUserIds}');
}
prefiilcheckbox11(List<int> selectedid) async {
print("prefiilcheckbox11_selectedddd_id:isss: $selectedid");
for (int i = 0; i < hivestoredbox.length; i++) {
final data = hivestoredbox.getAt(i);
print(
"data_is_delectinggg: ${data!.usrid} ${data.username} ${data.isChecked}");
if (data.isChecked) {
data.isChecked = false;
hivestoredbox.putAt(i, data);
}
}
final List<int> storingSelecteid = [];
for (final id in selectedid) {
print("prefilled_id: $id");
var allRecords = hivestoredbox.values.toList();
print("allRecordsStored_added_unsyncedRecords : $allRecords");
var unsyncedRecords =
allRecords.where((record) => record.usrid == id).toList();
print("Shareddddcheckbox_unsyncedRecords : $unsyncedRecords");
for (var record in unsyncedRecords) {
print(
"record_description : ${record.username}, ${record.usrid}, ${record.isChecked}");
storingSelecteid.add(record.usrid);
}
}
print("Storedd_test_id_is: $storingSelecteid");
for (int id in storingSelecteid) {
final index = hivestoredbox.values
.cast<Addofflinecredential>()
.toList()
.indexWhere((element) => element.usrid == id);
if (index != -1) {
// Update the checkbox value for the specified ID
final yourData = hivestoredbox.getAt(index)!;
yourData.isChecked = true;
hivestoredbox.putAt(index, yourData);
}
}
}
List<int> getselecteduserid11(int? credentialid) {
print("cred_iddgetselecteduserid11: $credentialid");
var getall111 = hivestoredboxstoreshare.values.toList();
print("getall_storeuserid : $getall111");
for (var id in getall111) {
print("cjeck_idddd: ${id.name},${id.id},${id.sharedUserIds}");
}
Storedcredential getstoredData = hivestoredboxstoreshare.values
.toList()
.firstWhere((element) => element.id == credentialid!);
print('485 with ID11 ${getstoredData.sharedUserIds}');
///Storedcredential? getstoredData = hivestoredboxstoreshare.get(credentialid);
if (getstoredData != null) {
print("get_checked_list11: ${getstoredData.sharedUserIds}");
print("get_checked_list11: ${getstoredData.name}");
print("get_checked_list11: ${getstoredData.uid}");
return getstoredData.sharedUserIds;
}
return [];
}
List<Addofflinecredential> getAlluserlist() {
print("Stored_ALL_valuesssss : ${hivestoredbox.values.toList()}");
print(
"Stored_ALL_valuesssss_leangthhh : ${hivestoredbox.values.toList().length}");
return hivestoredbox.values.toList();
}
void searchInHive(String value) {}
}

View File

@ -0,0 +1,22 @@
import 'package:flutter/material.dart';
import 'package:connectivity_plus/connectivity_plus.dart';
class ConnectivityProvider with ChangeNotifier {
bool _isConnected = true; // Initial value, assuming we have internet.
bool get isConnected => _isConnected;
ConnectivityProvider() {
checkConnectivity();
Connectivity().onConnectivityChanged.listen((result) {
_isConnected = result != ConnectivityResult.none;
notifyListeners();
});
}
Future<void> checkConnectivity() async {
var connectivityResult = await Connectivity().checkConnectivity();
_isConnected = connectivityResult != ConnectivityResult.none;
notifyListeners();
}
}

View File

@ -0,0 +1,60 @@
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/modelclasses/delete_credential_model.dart';
import 'package:flutter_passvault/hive_storage/store_credential_model.dart';
import 'package:flutter_passvault/view_pages/shared_preferance.dart';
import 'package:hive/hive.dart';
class DelCredentialProvider extends ChangeNotifier {
final dio = Dio();
MDeleteCredentialData? _serverResponse;
MDeleteCredentialData? get delcredential => _serverResponse;
final Box<Storedcredential> hivebox =
Hive.box<Storedcredential>('credentialListBox');
Future<MDeleteCredentialData?> postdelcredential() async {
final dataToSendBox = await Hive.openBox<Storedcredential>('dataToSendBox');
print("deleted_values_uid: ${dataToSendBox.values}");
for (var data in dataToSendBox.values) {
print("deleted_dataaa ${data.uid}");
print("deleted_api_name: ${data.name}");
print("deleted_api_uid: ${data.uid}");
String? authtoken = await CustomSharedPreferences.getCustomValue();
print("del_auth_code: $authtoken");
dio.options.headers["Authorization"] = 'Bearer $authtoken';
try {
final response = await dio
.delete("${ApiConstants.newKonectarurl}/creds/${data.uid}");
if (response.statusCode == 200) {
dataToSendBox.delete(data);
print('added successful');
print(response.data);
print(response.data['message']);
_serverResponse = MDeleteCredentialData.fromJson(response.data);
print("server_resposeeeeeeeeeeeeeedel: $_serverResponse");
notifyListeners();
} else {
print('Failed : ${response.statusCode}');
}
} catch (error) {
print('Failed : $error');
}
}
return _serverResponse;
}
}

View File

@ -0,0 +1,76 @@
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/modelclasses/edit_credential_model.dart';
import 'package:flutter_passvault/hive_storage/store_credential_model.dart';
import 'package:flutter_passvault/view_pages/shared_preferance.dart';
import 'package:hive/hive.dart';
class EditCredentialProvider extends ChangeNotifier {
final dio = Dio();
MyEditCredentialDta? _serverResponse;
MyEditCredentialDta? get editcredential => _serverResponse;
final Box<Storedcredential> hivebox =
Hive.box<Storedcredential>('credentialListBox');
Future<void> posteditcredential() async {
var allRecords = hivebox.values.toList();
var unsyncedRecords = allRecords
.where((record) =>
record.issync == false && record.isOfflineupdate == true)
.toList();
print("Stored_updateunsyncedRecords : $unsyncedRecords");
for (var record in unsyncedRecords) {
print("unsyncedRecords_uid: ${record.uid}");
final Map<String, dynamic> editdataa = {
'username': record.username,
'password': record.password,
'name': record.name,
'detail': record.detail
};
String? value = await CustomSharedPreferences.getCustomValue();
print("Edit hMy_credential: $value");
dio.options.headers['Authorization'] = 'Bearer $value';
print("uid_iss11: ${record.uid}");
try {
final response = await dio.put(
"${ApiConstants.newKonectarurl}/creds/${record.uid}",
data: editdataa);
if (response.statusCode == 200) {
print('Updated successful');
print(response.data);
print("updatedd ${response.data['data']}");
record.issync = true;
// record.uid = true;
record.isOfflineupdate = false;
await hivebox.put(record.id, record);
print("server_resposeeeeeeeeeeeeeeEdittt: $_serverResponse");
_serverResponse = MyEditCredentialDta.fromJson(response.data);
} else {
print('Failed : ${response.statusCode}');
record.issync = false;
record.isOfflineupdate = true;
await hivebox.put(record.id, record);
}
} catch (error) {
print('Failed : $error');
}
}
}
}

View File

@ -0,0 +1,208 @@
import 'dart:async';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/Network_connection/internet_access_checker.dart';
import 'package:flutter_passvault/Service/share_credentials.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/hive_storage/hive_repositary.dart';
import 'package:flutter_passvault/modelclasses/jsomdata.dart';
import 'package:flutter_passvault/modelclasses/my_credential_model.dart';
import 'package:flutter_passvault/hive_storage/store_credential_model.dart';
import 'package:flutter_passvault/view_pages/shared_preferance.dart';
import 'package:hive_flutter/adapters.dart';
class MyCredentialProvider extends ChangeNotifier {
final _service = CredentialService();
bool isLoading = true;
List<JsonData> mycredentialdata = [];
List<JsonData> get todos => mycredentialdata;
final Dio dio = Dio();
Future<void> fetchMyCredential() async {
//new
final Box<Storedcredential> hivebox =
Hive.box<Storedcredential>('credentialListBox');
var allRecords = hivebox.values.toList();
// var syncedRecords =
// allRecords.where((record) => record.issync == true).toList();
print("Stored__syncedRecords : $allRecords");
if (allRecords.isEmpty) {
NetworkConnectivity networkConnectivity = NetworkConnectivity();
bool isOnline = await networkConnectivity.isInternetAvailable();
print("providerrrr: $isOnline");
if (isOnline) {
final response = await _service.getAll();
mycredentialdata = response;
isLoading = false;
notifyListeners();
} else {
final dataRepository =
HiveDataRepository(hivebox); // Initialize with your Hive box
List<Storedcredential> storedData = dataRepository.getAllDataFromHive();
mycredentialdata = storedData;
notifyListeners();
print("storedDatastoredData_issssss: $storedData");
}
} else {
String? value = await CustomSharedPreferences.getCustomValue();
print("Elseee_AuthMy_credential: $value");
dio.options.headers["Authorization"] = 'Bearer $value';
try {
final response = await dio.get("${ApiConstants.newKonectarurl}/creds");
if (response.statusCode == 200) {
final jsonData = response.data as Map<String, dynamic>;
final messageList = List<Map<String, dynamic>>.from(jsonData['data']);
final fetchedMessages =
messageList.map((json) => CredentialList.fromJson(json)).toList();
print("elseeefetchedMyCredential_is : $fetchedMessages");
print(fetchedMessages);
/////////////////////////////////////////////////////////////////////////////////
///
if (fetchedMessages.isEmpty) {
print("fetchedMessages_isEmptyyyy : $fetchedMessages");
List<Storedcredential> hiveData = hivebox.values.toList();
print("existingKeysCredsss_hiveData data_is : $hiveData");
List<Storedcredential> dataToDelete = hiveData
.where((hiveItem) =>
!messageList.any((apiItem) => apiItem['id'] == hiveItem.id))
.toList();
for (var item in dataToDelete) {
print("Delting_Credsdata_isss ${item.key}");
print("Delting_Crdsdata_isss1 ${item.id} ${item.username}");
//await hivebox.delete(idsNotInApi[i]);
await hivebox.delete(item.key);
}
}
////////////////////////////////////////////////////////////////
for (final item in fetchedMessages) {
if (!fetchedMessages.contains(item)) {
print("Del_iddd_is: ${item.id}");
} else {
if (item.createdBy != item.pivot!.credId) {
print("nae__is : ${item.name}");
final data = Storedcredential(
id: item.id,
name: item.name,
username: item.username,
password: item.password,
detail: item.detail,
createdBy: item.createdBy,
modifiedBy: item.modifiedBy,
createdAt: item.createdAt,
updatedAt: item.updatedAt,
isOfflinecreated: false,
isOfflineupdate: false,
isOfflinedelete: false,
isOfflineshare: false,
issync: true,
uid: item.id,
sharedUserIds: [],
DeletedUserIds: []);
print("data.uid_is111: ${data.uid}");
print("item.uid_is111: ${item.id}");
print("item.uid_is111: ${item.name}");
await hivebox.put(item.id, data);
if (hivebox.values.every((data) => data.uid != item.id)) {
print("I_am_ifffff");
print("data.uid_isupppp: ${data.uid}");
print("item.uid_is_upppp: ${item.id}");
await hivebox.put(item.id, data);
} else if (hivebox.values.every((data) =>
data.name != item.name ||
data.username != item.username ||
data.password != item.password ||
data.detail != item.detail)) {
print("I_am_ifffff_elseeee");
print("data.uid_isupppp: ${data.uid}");
print("item.uid_is_upppp: ${item.id}");
await hivebox.put(item.id, data);
} else {
print("I_am__elseeee");
final hiveData = hivebox.values.toList();
final hiveIds =
hiveData.map((hiveItem) => hiveItem.id).toList();
final apiIds =
messageList.map((apiItem) => apiItem['id']).toList();
print('IDs in hiveIds: $hiveIds');
print('IDs in apiIds: $apiIds');
// 5. Identify IDs not in the API response
final idsNotInApi =
hiveIds.where((id) => !apiIds.contains(id)).toList();
// 6. Process or display the IDs not present in the API response
print('IDs in Hive but not in API: $idsNotInApi');
print('idsNotInApi API: ${idsNotInApi.length}');
for (int i = 0; i < idsNotInApi.length; i++) {
print("hive_forrrr: $i");
print("hive_forrrr: ${idsNotInApi[i]}");
await hivebox.delete(idsNotInApi[i]);
}
notifyListeners();
}
}
}
}
}
} catch (error) {
print('Failed : $error');
}
}
}
void addItem(JsonData item) {
mycredentialdata.insert(0, item);
fetchMyCredential();
notifyListeners();
}
void delItem(int newItem) {
mycredentialdata.removeAt(newItem);
fetchMyCredential();
notifyListeners();
}
void editItem(CredentialList item) {
mycredentialdata[item.id] = item;
fetchMyCredential();
notifyListeners();
}
}

View File

@ -0,0 +1,114 @@
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/modelclasses/share_credential_model.dart';
import 'package:flutter_passvault/hive_storage/store_credential_model.dart';
import 'package:flutter_passvault/view_pages/shared_preferance.dart';
import 'package:hive/hive.dart';
class ShareCredentialProvider extends ChangeNotifier {
final dio = Dio();
ShareCredentialData? _serverResponse;
ShareCredentialData? get message => _serverResponse;
Future<void> postsharecredential() async {
final Box<Storedcredential> hivebox =
Hive.box<Storedcredential>('credentialListBox');
var allRecords = hivebox.values.toList();
var unsyncedRecords =
allRecords.where((record) => record.isOfflineshare == true).toList();
print("Stored_shared_unsyncedRecords : $unsyncedRecords");
for (var record in unsyncedRecords) {
print("shareddd_data_value: ${record.name}");
print("shareddd_data_value: ${record.sharedUserIds}");
print("shareddd_data_value: ${record.uid}");
print("shareddd_data_value_: ${record.isOfflineshare}");
print("user_id: ${record.sharedUserIds.length}");
String key1 = 'users[]';
List<MapEntry<String, int>> keyValuePairs = [];
for (int i = 0; i < record.sharedUserIds.length; i++) {
int value = record.sharedUserIds[i];
print("keyShared_value_is: $value");
keyValuePairs.add(MapEntry(key1, value));
}
print("My_map_listdata_is $keyValuePairs");
String? token = await CustomSharedPreferences.getCustomValue();
final queryParameters = <String, dynamic>{};
for (var entry in keyValuePairs) {
queryParameters[entry.key] = entry.value;
print("entryyy_valueee: ${entry.value}");
}
dio.options.headers['Authorization'] = 'Bearer $token';
print("key_values: $keyValuePairs");
print("record.sharedUserIds: ${record.sharedUserIds}");
List<int> userlistid = [];
userlistid.addAll(record.sharedUserIds);
userlistid.add(record.createdBy);
print("record.userlist: $userlistid");
print(
"Shareeee_is: ${keyValuePairs.map((users) => 'users[]=$users').join('&')}");
final url =
'${ApiConstants.newKonectarurl}/creds/share/${record.uid}?${userlistid.map((users) => 'users[]=$users').join('&')}';
print("urllll_is: $url");
print("url_is: $url");
try {
final response = await dio.post(url);
if (response.statusCode == 200) {
record.issync = true;
record.isOfflineshare = false;
await hivebox.put(record.id, record);
print('share data successful');
print(response.data);
print(response.data['message']);
print(response.data['data']);
_serverResponse = ShareCredentialData.fromJson(response.data);
notifyListeners();
} else {
record.issync = false;
record.isOfflineshare = true;
await hivebox.put(record.id, record);
print('Failed : ${response.statusCode}');
}
} catch (error) {
print('Failed : $error');
}
}
}
//}
String listToString(List<int> inputList) {
return inputList.join(', ');
}
}

View File

@ -0,0 +1,48 @@
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/modelclasses/sso_validation_model.dart';
class SsoValidationProvider extends ChangeNotifier {
final dio = Dio();
Ssovalidationmodel? _serverResponse;
Ssovalidationmodel? get message => _serverResponse;
Future<void> ssovalidationrespose(
String name, String email, String device, String token) async {
final Map sendingregdara = {
"name": name,
"email": email,
"device": device,
"fcm_token": token
};
// final Map<String, dynamic> sendingregdara = {
// "name": "Laxman",
// "email": "laxmank@aissel.com",
// };
print("Form_data_is: $sendingregdara");
try {
final regResponse = await dio.post(
"${ApiConstants.newKonectarurl}/validate_sso",
data: sendingregdara);
// ignore: unrelated_type_equality_checks
if (regResponse.statusCode == 200) {
_serverResponse = Ssovalidationmodel.fromJson(regResponse.data);
print("server_resposeeeeeeeeeeeeee: $_serverResponse");
notifyListeners();
} else {
print('Failed : ${regResponse.statusCode}');
notifyListeners();
}
} catch (error) {
print('Failed : $error');
}
}
}

View File

@ -0,0 +1,43 @@
// ignore_for_file: non_constantidentifier_names
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/modelclasses/loginuserdata_model.dart';
import 'package:flutter_passvault/view_pages/shared_preferance.dart';
class LoginuserProvider extends ChangeNotifier {
final dio = Dio();
Loginusermodel? _serverResponse;
bool isLoading = false;
Loginusermodel? get message => _serverResponse;
Future<void> GetUsrResponse() async {
final dio = Dio();
String? authToken = await CustomSharedPreferences.getCustomValue();
dio.options.headers['Authorization'] = 'Bearer $authToken';
try {
final response = await dio.post(
"${ApiConstants.newKonectarurl}/details",
);
if (response.statusCode == 200) {
print('successful_user_Response() : ${response.data}');
_serverResponse = Loginusermodel.fromJson(response.data);
print('user_details_Response() : $_serverResponse');
notifyListeners();
} else {
print('Failed : ${response.statusCode}');
}
} catch (error) {
print('Failed : $error');
}
}
}

View File

@ -0,0 +1,32 @@
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/view_pages/hex_color.dart';
class ApiConstants {
static String newKonectarurl = 'https://passvault.konectar.io/api';
static Color backgroundcolor = HexColor("#2b9af3");
static Color orangecolor = HexColor("#f96731");
static String fontFamily = 'source-sans-pro.regular.ttf';
static String ssoUrl = 'https://sso.konectar.io/auth/realms/konectar';
// bool get isTablet(BuildContext context) {
// final double deviceWidth = MediaQuery.of(context).size.width;
// final double deviceHeight = MediaQuery.of(context).size.height;
// final diagonalSize =
// sqrt((deviceWidth * deviceWidth) + (deviceHeight * deviceHeight));
// return diagonalSize >
// 600; // You can adjust this threshold based on your design considerations.
// }
bool get isTablet {
final firstView = WidgetsBinding.instance.platformDispatcher.views.first;
final logicalShortestSide =
firstView.physicalSize.shortestSide / firstView.devicePixelRatio;
// print("size:${logicalShortestSide > 600} tablet ");
return logicalShortestSide > 800;
}
}

View File

@ -0,0 +1,25 @@
import 'package:flutter/material.dart';
class TextWithHorizontalLine extends StatelessWidget {
final String text;
const TextWithHorizontalLine({super.key, required this.text});
@override
Widget build(BuildContext context) {
return Stack(
alignment: Alignment.center,
children: [
Text(
text,
style: const TextStyle(fontSize: 12),
), // Change font size as needed
const Divider(
height: 0,
thickness: 2, // Adjust the thickness of the line as needed
color: Colors.black, // Change the color of the line as needed
),
],
);
}
}

View File

@ -0,0 +1,85 @@
// ignore_for_file: use_key_in_widget_constructors, non_constant_identifier_names
import 'package:flutter/material.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
class NewReusableTextField extends StatefulWidget {
final TextEditingController? controller;
final String? hintText;
final Icon? icon;
final bool hasBorder;
final String? labelText;
final bool showLabel;
final bool secure;
final bool emailkeyboard;
final Key? key1;
// ignore: prefer_const_constructors_in_immutables
NewReusableTextField({
this.controller,
this.hintText,
this.icon,
this.hasBorder = true,
this.labelText,
this.showLabel = true,
this.secure = false,
this.emailkeyboard = false,
this.key1,
});
@override
State<NewReusableTextField> createState() => _NewReusableTextFieldState();
}
class _NewReusableTextFieldState extends State<NewReusableTextField> {
bool _showPwd = false;
final color1 = ApiConstants.backgroundcolor;
@override
Widget build(BuildContext context) {
return TextField(
key: widget.key1,
keyboardType: widget.emailkeyboard
? TextInputType.emailAddress
: TextInputType.text,
obscureText: widget.secure ? !_showPwd : false,
controller: widget.controller,
decoration: InputDecoration(
labelText: widget.showLabel ? widget.labelText : null,
labelStyle: widget.showLabel
? const TextStyle(
fontFamily: 'source-sans-pro.regular.ttf',
color: Colors.black,
fontWeight: FontWeight.normal, // Adjust the font weight
letterSpacing:
0.9, // Adjust the letter spacing // Set the rendering mode
)
: null,
contentPadding: const EdgeInsets.symmetric(
horizontal: 10.0, vertical: 4.0), // Reduce the vertical padding
border:
widget.hasBorder ? const OutlineInputBorder() : InputBorder.none,
hintText: widget.hintText,
prefixIcon: widget.icon,
suffixIcon: widget.secure
? IconButton(
icon: Icon(
// Based on passwordVisible state choose the icon
_showPwd ? Icons.visibility : Icons.visibility_off,
color: _showPwd ? color1 : Colors.grey,
),
onPressed: () {
// Update the state i.e. toogle the state of passwordVisible variable
setState(() {
_showPwd = !_showPwd;
});
},
)
: null),
);
}
}

View File

@ -0,0 +1,77 @@
// ignore_for_file: use_key_in_widget_constructors
import 'package:flutter/material.dart';
enum ReusableWidgetType {
textField,
textView,
elevatedButton,
}
class ReusableTextWidget extends StatelessWidget {
final TextEditingController? controller;
final String? hintText;
final VoidCallback? onPressed;
final ReusableWidgetType widgetType;
final Icon? icon;
final ValueChanged<String>? onTextChanged; // Callback for text changes
// ignore: prefer_const_constructors_in_immutables
ReusableTextWidget(
{this.controller,
this.hintText,
required this.widgetType,
this.onPressed,
this.icon,
this.onTextChanged});
@override
Widget build(BuildContext context) {
switch (widgetType) {
case ReusableWidgetType.textField:
return Padding(
padding: const EdgeInsets.all(8.0),
child: TextField(
controller: controller,
decoration: InputDecoration(
contentPadding: const EdgeInsets.symmetric(vertical: 9.0),
border: const OutlineInputBorder(),
hintText: hintText,
prefixIcon: icon,
),
),
);
case ReusableWidgetType.textView:
return Text(
hintText!,
style: const TextStyle(fontSize: 16, color: Colors.blueAccent),
);
case ReusableWidgetType.elevatedButton:
return Padding(
padding: const EdgeInsets.only(top: 18.0),
child: FractionallySizedBox(
widthFactor: 0.9,
child: ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topRight: Radius.circular(0.0),
topLeft: Radius.circular(0.0),
),
),
),
child: Text(
hintText!,
style: const TextStyle(color: Colors.white),
),
),
),
);
default:
return const SizedBox.shrink();
}
}
}

View File

@ -0,0 +1,41 @@
import 'package:flutter/material.dart';
import 'package:flutter_passvault/view_pages/hex_color.dart';
class ReusableButton extends StatefulWidget {
final String text;
final VoidCallback onPressed;
final Color color;
final Color textColor;
final bool isRounded;
ReusableButton({
required this.text,
required this.onPressed,
required this.color,
this.textColor = Colors.white,
this.isRounded = true,
});
@override
State<ReusableButton> createState() => _ReusableButtonState();
}
class _ReusableButtonState extends State<ReusableButton> {
Color color1 = HexColor("2a47a5");
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: widget.onPressed,
style: ElevatedButton.styleFrom(
backgroundColor: widget.color.withOpacity(0.9),
shape: widget.isRounded
? const StadiumBorder()
: const RoundedRectangleBorder()),
child: Text(
widget.text,
style: TextStyle(color: widget.textColor),
),
);
}
}

View File

@ -0,0 +1,43 @@
import 'package:flutter/material.dart';
import 'package:flutter_passvault/custom_widgets/reuse_textview.dart';
class CardView extends StatelessWidget {
final String title;
final String? description;
final bool showdescription;
// ignore: use_key_in_widget_constructors, prefer_const_constructors_in_immutables
CardView(
{required this.title, this.description, this.showdescription = true});
@override
Widget build(BuildContext context) {
return Card(
elevation: 2,
child: ListTile(
title: ReusableTextView(
text: title,
// ignore: prefer_const_constructors
textStyle: TextStyle(
fontFamily: 'source-sans-pro.regular.ttf',
color: Colors.black,
fontSize: 20,
),
),
subtitle: showdescription
? ReusableTextView(
text: description!,
// ignore: prefer_const_constructors
textStyle: TextStyle(
fontFamily: 'source-sans-pro.regular.ttf',
color: Colors.black,
fontSize: 20,
),
)
: null,
),
);
}
}

View File

@ -0,0 +1,23 @@
import 'package:flutter/material.dart';
class ReusableTextView extends StatelessWidget {
final String text;
final TextStyle? textStyle;
final TextAlign? textAlign;
// ignore: prefer_const_constructors_in_immutables, use_key_in_widget_constructors
ReusableTextView({
required this.text,
this.textStyle,
this.textAlign,
});
@override
Widget build(BuildContext context) {
return Text(
text,
style: textStyle,
textAlign: textAlign,
);
}
}

81
lib/firebase_options.dart Normal file
View File

@ -0,0 +1,81 @@
// File generated by FlutterFire CLI.
// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
import 'package:flutter/foundation.dart'
show defaultTargetPlatform, kIsWeb, TargetPlatform;
/// Default [FirebaseOptions] for use with your Firebase apps.
///
/// Example:
/// ```dart
/// import 'firebase_options.dart';
/// // ...
/// await Firebase.initializeApp(
/// options: DefaultFirebaseOptions.currentPlatform,
/// );
/// ```
class DefaultFirebaseOptions {
static FirebaseOptions get currentPlatform {
if (kIsWeb) {
return web;
}
switch (defaultTargetPlatform) {
case TargetPlatform.android:
return android;
case TargetPlatform.iOS:
return ios;
case TargetPlatform.macOS:
return macos;
case TargetPlatform.windows:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for windows - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.linux:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for linux - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
default:
throw UnsupportedError(
'DefaultFirebaseOptions are not supported for this platform.',
);
}
}
static const FirebaseOptions web = FirebaseOptions(
apiKey: 'AIzaSyAzrqyJKpqnxN0XThGN4HpYdLrDJDJ6Zdc',
appId: '1:973222359655:web:7a936bb957c5a629015ac2',
messagingSenderId: '973222359655',
projectId: 'novunotification',
authDomain: 'novunotification.firebaseapp.com',
storageBucket: 'novunotification.appspot.com',
measurementId: 'G-MV3ZN2NXHH',
);
static const FirebaseOptions android = FirebaseOptions(
apiKey: 'AIzaSyAVgtz1omtgHHOWd5mZq74H844nhuH1eEI',
appId: '1:973222359655:android:4c9dfab71d40e3e7015ac2',
messagingSenderId: '973222359655',
projectId: 'novunotification',
storageBucket: 'novunotification.appspot.com',
);
static const FirebaseOptions ios = FirebaseOptions(
apiKey: 'AIzaSyD9Sr-h9qEv2t_DEaXprCnBmPDEzxMCqaY',
appId: '1:973222359655:ios:a689abf0ffaf68d3015ac2',
messagingSenderId: '973222359655',
projectId: 'novunotification',
storageBucket: 'novunotification.appspot.com',
iosBundleId: 'com.example.flutterPassvault',
);
static const FirebaseOptions macos = FirebaseOptions(
apiKey: 'AIzaSyD9Sr-h9qEv2t_DEaXprCnBmPDEzxMCqaY',
appId: '1:973222359655:ios:23c555086b45dc38015ac2',
messagingSenderId: '973222359655',
projectId: 'novunotification',
storageBucket: 'novunotification.appspot.com',
iosBundleId: 'com.example.flutterPassvault.RunnerTests',
);
}

View File

@ -0,0 +1,23 @@
// ignore_for_file: overridden_fields
import 'package:flutter_passvault/modelclasses/usr_list_model.dart';
import 'package:hive/hive.dart';
part 'add_creds_offline.g.dart';
@HiveType(typeId: 1)
class Addofflinecredential extends HiveObject implements Message {
@HiveField(0)
String username;
@HiveField(1)
int usrid;
@override
@HiveField(2)
bool isChecked; // Boolean property to track checked state
Addofflinecredential(this.username, this.usrid, this.isChecked);
@override
dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}

View File

@ -0,0 +1,47 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'add_creds_offline.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class AddofflinecredentialAdapter extends TypeAdapter<Addofflinecredential> {
@override
final int typeId = 1;
@override
Addofflinecredential read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Addofflinecredential(
fields[0] as String,
fields[1] as int,
fields[2] as bool,
);
}
@override
void write(BinaryWriter writer, Addofflinecredential obj) {
writer
..writeByte(3)
..writeByte(0)
..write(obj.username)
..writeByte(1)
..write(obj.usrid)
..writeByte(2)
..write(obj.isChecked);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is AddofflinecredentialAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@ -0,0 +1,5 @@
class DataModel {
final int delid;
DataModel(this.delid);
}

View File

@ -0,0 +1,176 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_passvault/hive_storage/store_credential_model.dart';
import 'package:hive/hive.dart';
class HiveDataRepository extends ChangeNotifier {
final Box<Storedcredential> _hiveBox;
List<Storedcredential> _searchResults = [];
HiveDataRepository(this._hiveBox) {
_searchResults = getAllDataFromHive(); // Initialize with all data
}
List<Storedcredential> getAllDataFromHive() {
print("Stored_ALL_valuesssss : ${_hiveBox.values.toList()}");
print(
"Stored_ALL_valuesssss_leangthhh : ${_hiveBox.values.toList().length}");
return _hiveBox.values.toList();
}
List<Storedcredential> getAllofflineData() {
print(
"Stored_only offlineALL_valuesssss : ${_hiveBox.values.where((data) => data.isOfflinecreated).toList()}");
print(
"Stored_ALL_offvaluesssss_leangthhh : ${_hiveBox.values.toList().length}");
print("Stored_ALL_offvaluesssss_toList : ${_hiveBox.values.toList()}");
var keyToRetrieve =
'isOfflinecreated'; // Replace with the key you want to retrieve
print("get_bool)_valuess: ${_hiveBox.get(keyToRetrieve)}");
getAllDataFromHive();
return _hiveBox.values.where((data) => data.isOfflinecreated).toList();
}
void addOfflineData(Storedcredential data) async {
print("append_dataaaaaa_issss : ${data.isOfflinecreated}");
print(
"Beforee Stored_ALL_valuesssss_leangthhh : ${_hiveBox.values.toList().length}");
_hiveBox.put(data.id, data);
notifyListeners();
getAllDataFromHive();
}
void updateOfflineData(Storedcredential data) async {
print(
"Beforee Stored_ALL_valuesssss_leangthhh : ${_hiveBox.values.toList().length}");
var jsonKeys = _hiveBox.keys.toList();
print("jsonkeyss: $jsonKeys");
Storedcredential? storedData = _hiveBox.get(data.id);
print("data.id : ${data.id}");
print("data.uid : ${data.uid}");
print("Stored_idd: ${storedData?.id}");
print("Stored_name: ${storedData?.name}");
if (storedData != null) {
storedData.username = data.username;
storedData.password = data.password;
storedData.name = data.name;
storedData.detail = data.detail;
// if (data.uid == 0) {
await _hiveBox.put(data.id, data);
// } else {
// await _hiveBox.put(data.uid, data);
// }
print("successsfully updateddd");
notifyListeners();
}
getAllDataFromHive();
}
Future<HiveDataRepository?> delofflinecredential(
Storedcredential dataDel) async {
Storedcredential? storeddelData = _hiveBox.get(dataDel.id);
if (storeddelData != null) {
_hiveBox.delete(dataDel.id);
print("Dell_data.id : ${dataDel.id}");
print("uniq_id_Dell_data.id : ${storeddelData.uid}");
final dataToSendBox =
await Hive.openBox<Storedcredential>('dataToSendBox');
dataToSendBox.add(storeddelData);
notifyListeners();
}
getAllDataFromHive();
return null;
}
Future<void> openHiveBoxAndRetrieveData() async {
print("Stored_ALL_offvaluesssss_toList : ${_hiveBox.values.toList()}");
var allRecords = _hiveBox.values.toList();
var unsyncedRecords = allRecords
.where((record) =>
record.issync == false && record.isOfflinedelete == true)
.toList();
print("Stored_DeleteunsyncedRecords : $unsyncedRecords");
print("Stored_unsyncedRecords : $unsyncedRecords");
}
void adduserid(List<int> getofflineselecteduser, int? credentialid) async {
Storedcredential? storedDatacid = _hiveBox.get(credentialid);
print("stored_cid : ${storedDatacid!.name}");
print("getofflineselecteduser: $getofflineselecteduser");
print("getofflineselectedusercredentialid: $credentialid");
storedDatacid.sharedUserIds = getofflineselecteduser;
print("sharedUserIds_isss : ${storedDatacid.sharedUserIds}");
await _hiveBox.put(credentialid, storedDatacid);
//getAllDataFromHive();
}
List<int> getselecteduserid(int? credentialid) {
Storedcredential? getstoredData = _hiveBox.get(credentialid);
if (getstoredData != null) {
print("get_checked_list: ${getstoredData.sharedUserIds}");
print("get_checked_list: ${getstoredData.name}");
print("get_checked_list: ${getstoredData.uid}");
return getstoredData.sharedUserIds;
}
return [];
}
// List<Storedcredential> searchInHive(String query) {
// var data = _hiveBox.values
// .where((data) => data.name.toLowerCase().contains(query.toLowerCase()))
// .toList();
// print("return data : $data");
// return _hiveBox.values
// .where((data) => data.name.toLowerCase().contains(query.toLowerCase()))
// .toList();
// }
List<Storedcredential> get searchResults => _searchResults;
void searchInHive(String query) {
_searchResults = _hiveBox.values
.where((data) => data.name.toLowerCase().contains(query.toLowerCase()))
.toList();
notifyListeners();
print("return data : $_searchResults");
print("return data : $searchResults");
//return searchResults;
}
}

View File

@ -0,0 +1,79 @@
import 'package:flutter_passvault/modelclasses/jsomdata.dart';
import 'package:hive/hive.dart';
part 'store_credential_model.g.dart';
@HiveType(typeId: 0)
class Storedcredential extends HiveObject implements JsonData {
@override
@HiveField(0)
int id;
@override
@HiveField(1)
String name;
@override
@HiveField(2)
String username;
@override
@HiveField(3)
String password;
@override
@HiveField(4)
String detail;
@override
@HiveField(5)
int createdBy;
@override
@HiveField(6)
int modifiedBy;
@override
@HiveField(7)
DateTime createdAt;
@override
@HiveField(8)
DateTime updatedAt;
@HiveField(9)
bool isOfflinecreated;
@HiveField(10)
bool isOfflineupdate;
@HiveField(11)
bool isOfflinedelete;
@HiveField(12)
bool isOfflineshare;
@HiveField(13)
bool issync;
@HiveField(14)
int uid;
@HiveField(15)
List<int> sharedUserIds;
@HiveField(16)
// ignore: non_constant_identifier_names
List<int>? DeletedUserIds;
Storedcredential(
{required this.id,
required this.name,
required this.username,
required this.password,
required this.detail,
required this.createdBy,
required this.modifiedBy,
required this.createdAt,
required this.updatedAt,
required this.isOfflinecreated,
required this.isOfflineupdate,
required this.isOfflinedelete,
required this.isOfflineshare,
required this.issync,
required this.uid,
required this.sharedUserIds,
required this.DeletedUserIds});
}

View File

@ -0,0 +1,89 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'store_credential_model.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class StoredcredentialAdapter extends TypeAdapter<Storedcredential> {
@override
final int typeId = 0;
@override
Storedcredential read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Storedcredential(
id: fields[0] as int,
name: fields[1] as String,
username: fields[2] as String,
password: fields[3] as String,
detail: fields[4] as String,
createdBy: fields[5] as int,
modifiedBy: fields[6] as int? ?? 0,
createdAt: fields[7] as dynamic,
updatedAt: fields[8] as dynamic,
isOfflinecreated: fields[9] as bool,
isOfflineupdate: fields[10] as bool,
isOfflinedelete: fields[11] as bool,
isOfflineshare: fields[12] as bool,
issync: fields[13] as bool,
uid: fields[14] as int,
sharedUserIds: (fields[15] as List).cast<int>(),
DeletedUserIds: (fields[16] ?? []).cast<int>(),
);
}
@override
void write(BinaryWriter writer, Storedcredential obj) {
writer
..writeByte(17)
..writeByte(0)
..write(obj.id)
..writeByte(1)
..write(obj.name)
..writeByte(2)
..write(obj.username)
..writeByte(3)
..write(obj.password)
..writeByte(4)
..write(obj.detail)
..writeByte(5)
..write(obj.createdBy)
..writeByte(6)
..write(obj.modifiedBy)
..writeByte(7)
..write(obj.createdAt)
..writeByte(8)
..write(obj.updatedAt)
..writeByte(9)
..write(obj.isOfflinecreated)
..writeByte(10)
..write(obj.isOfflineupdate)
..writeByte(11)
..write(obj.isOfflinedelete)
..writeByte(12)
..write(obj.isOfflineshare)
..writeByte(13)
..write(obj.issync)
..writeByte(14)
..write(obj.uid)
..writeByte(15)
..write(obj.sharedUserIds)
..writeByte(16)
..write(obj.DeletedUserIds);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is StoredcredentialAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:flutter_passvault/hive_storage/add_creds_offline.dart';
import 'package:flutter_passvault/modelclasses/usr_list_model.dart';
import 'package:hive/hive.dart';
class StoredDataRepository extends ChangeNotifier {
final Box<Addofflinecredential>
_hiveBox1; // Use the correct type for your Hive box
StoredDataRepository(this._hiveBox1);
List<Message> _messages = [];
List<Message> get messages => _messages;
set message(List<Message> messages) {
_messages = messages;
notifyListeners();
}
List<Addofflinecredential> getAlluserdataDataFromHive() {
print("Stored_ALL_valuesssss : ${_hiveBox1.values.toList()}");
print(
"Stored_ALL_valuesssss_leangthhh : ${_hiveBox1.values.toList().length}");
return _hiveBox1.values.toList();
}
void updateMessageCheckedStatus(int index, bool isChecked) {
_messages[index].isChecked = isChecked;
notifyListeners();
}
}

View File

@ -0,0 +1,18 @@
// ignore_for_file: overridden_fields
import 'package:hive/hive.dart';
part 'test_hive.g.dart';
@HiveType(typeId: 2)
class Addtestofflinecredential {
@HiveField(0)
final String username1;
@HiveField(1)
final int usrid1;
Addtestofflinecredential({required this.username1, required this.usrid1});
@override
dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}

View File

@ -0,0 +1,45 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'test_hive.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class AddtestofflinecredentialAdapter
extends TypeAdapter<Addtestofflinecredential> {
@override
final int typeId = 2;
@override
Addtestofflinecredential read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Addtestofflinecredential(
username1: fields[0] as String,
usrid1: fields[1] as int,
);
}
@override
void write(BinaryWriter writer, Addtestofflinecredential obj) {
writer
..writeByte(2)
..writeByte(0)
..write(obj.username1)
..writeByte(1)
..write(obj.usrid1);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is AddtestofflinecredentialAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

403
lib/main.dart Normal file
View File

@ -0,0 +1,403 @@
import 'dart:async';
import 'dart:io';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_passvault/api_provider/add_credentail_provider.dart';
import 'package:flutter_passvault/api_provider/api_provider_class.dart';
import 'package:flutter_passvault/api_provider/connectivty_provider.dart';
import 'package:flutter_passvault/api_provider/delete_provider.dart';
import 'package:flutter_passvault/api_provider/edit_credential_provider.dart';
import 'package:flutter_passvault/api_provider/share_credential_provider.dart';
import 'package:flutter_passvault/api_provider/sso_validation_provider.dart';
import 'package:flutter_passvault/api_provider/user_details_provider.dart';
import 'package:flutter_passvault/constant/constantfile.dart';
import 'package:flutter_passvault/custom_widgets/reuse_textview.dart';
import 'package:flutter_passvault/firebase_options.dart';
import 'package:flutter_passvault/hive_storage/add_creds_offline.dart';
import 'package:flutter_passvault/hive_storage/hive_repositary.dart';
import 'package:flutter_passvault/hive_storage/storedserlist.dart';
import 'package:flutter_passvault/hive_storage/test_hive.dart';
import 'package:flutter_passvault/hive_storage/store_credential_model.dart';
import 'package:flutter_passvault/view_pages/home_screen_page.dart';
import 'package:flutter_passvault/seesionManager/session_manager.dart';
import 'package:flutter_passvault/view_pages/shared_preferance.dart';
import 'package:hive_flutter/adapters.dart';
// import 'package:hive_flutter/hive_flutter.dart';
import 'package:openid_client/openid_client.dart';
import 'package:provider/provider.dart';
import 'api_provider/my_credential_provider.dart';
import 'routes/route_config.dart';
import 'sso_login/openid_io.dart'
if (dart.library.html) 'sso_login/openid_browser.dart';
var keycloakUri = ApiConstants.ssoUrl;
const scopes = ['profile'];
Credential? credential;
late final Client client;
Future<Client> getClient() async {
var uri = Uri.parse(keycloakUri);
if (!kIsWeb && Platform.isAndroid) uri = uri.replace(host: 'sso.konectar.io');
var clientId = 'appwildcard';
var clientSecret = 'fb812995-9c21-44dc-99ed-00b50dfa2dd5';
var issuer = await Issuer.discover(uri);
return Client(
issuer,
clientId,
clientSecret: clientSecret,
);
}
final messaging = FirebaseMessaging.instance;
Timer? timer;
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
final settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
if (kDebugMode) {
print('Permission granted: ${settings.authorizationStatus}');
}
FirebaseMessaging.onMessage.listen((RemoteMessage message) async {
if (kDebugMode) {
print('Handling a foreground message: ${message.messageId}');
print('Message data: ${message.data}');
print('Message notification: ${message.notification?.title}');
print('Message notification: ${message.notification?.body}');
await showNotification(message);
}
});
if (!kIsWeb && Platform.isAndroid) {}
// timerrfun();
//hive
await Hive.initFlutter();
Hive.registerAdapter(StoredcredentialAdapter());
Hive.registerAdapter(AddofflinecredentialAdapter());
Hive.registerAdapter(AddtestofflinecredentialAdapter());
await Hive.openBox<Storedcredential>('credentialListBox');
await Hive.openBox<Addofflinecredential>('offlinedata');
await Hive.openBox<Storedcredential>('dataBox');
// }
client = await getClient();
credential = await getRedirectResult(client, scopes: scopes);
timerrfun();
runApp(MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => AddCredentialProvider(),
),
ChangeNotifierProvider(
create: (_) => APIProvider(),
),
ChangeNotifierProvider(
create: (_) => DelCredentialProvider(),
),
ChangeNotifierProvider(
create: (_) => EditCredentialProvider(),
),
ChangeNotifierProvider(
create: (_) => MyCredentialProvider(),
),
ChangeNotifierProvider(
create: (_) => ShareCredentialProvider(),
),
ChangeNotifierProvider(
create: (_) => LoginuserProvider(),
),
ChangeNotifierProvider(
create: (_) => ConnectivityProvider(),
),
ChangeNotifierProvider(create: (_) => SsoValidationProvider()),
ChangeNotifierProvider<HiveDataRepository>(
create: (_) => HiveDataRepository(
Hive.box<Storedcredential>('credentialListBox'))),
ChangeNotifierProvider<StoredDataRepository>(
create: (_) => StoredDataRepository(
Hive.box<Addofflinecredential>('offlinedata'))),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Passvault',
initialRoute: '/',
onGenerateRoute: RouteConfig.generateRoute,
routes: {
'/': (context) => FutureBuilder<bool>(
future: SessionManager().isLoggedIn(),
builder: (context, snapshot) {
// appContext = navigatorKey.currentContext;
print("Data_is : $snapshot");
if (snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
final isLoggedIn = snapshot.data ?? false;
print("isLoggedIn_is : $isLoggedIn");
return isLoggedIn ? const Screen() : const MyApp();
}
},
),
},
),
));
}
Future<void> showNotification(RemoteMessage message) async {
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
final InitializationSettings initializationSettings =
InitializationSettings(android: initializationSettingsAndroid);
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails(
'channel_id',
'channel_name',
importance: Importance.max,
priority: Priority.high,
);
const NotificationDetails platformChannelSpecifics =
NotificationDetails(android: androidPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0,
message.notification!.title,
message.notification!.body,
platformChannelSpecifics,
);
}
void timerrfun() async {
const Duration timerInterval = Duration(minutes: 1);
timer = Timer.periodic(timerInterval, (timer) async {
print("Performing periodic actions...");
final Box<Storedcredential> hivebox =
Hive.box<Storedcredential>('credentialListBox');
final AddCredentialProvider result1 = AddCredentialProvider();
final DelCredentialProvider result2 = DelCredentialProvider();
final EditCredentialProvider result3 = EditCredentialProvider();
final ShareCredentialProvider result4 = ShareCredentialProvider();
final MyCredentialProvider result5 = MyCredentialProvider();
final APIProvider result6 = APIProvider();
final HiveDataRepository result7 = HiveDataRepository(hivebox);
//try {
await result1.postcredential();
print("result_addedProvider : ${result1.success}");
await result3.posteditcredential();
print("result_editProvider11 : $result3");
await result2.postdelcredential();
print("result_DelProvider11 : ${result1.success}");
await result4.postsharecredential();
print("result_shareProvider11 : $result4");
await result5.fetchMyCredential();
print("result_FeccthProvider11 : $result5");
await result6.fetchMessages();
print("result_getcredential1 : $result6");
await result6.getcredential1();
print("result_getcredential1 : $result6");
print("result_shareProvider11 : $result5");
result7.getAllDataFromHive();
// ... the rest of your code
// } else {
// print("Context is null. Timer callback skipped.");
// }
});
}
class MyApp extends StatefulWidget {
static BuildContext? appContext;
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
// This widget is the root of your application.
UserInfo? userInfo;
String os = "";
@override
void initState() {
// TODO: implement initState
super.initState();
if (credential != null) {
print("client_is not null");
credential!.getUserInfo().then((userInfo) {
setState(() {
this.userInfo = userInfo;
});
});
}
}
@override
Widget build(BuildContext context) {
if (userInfo != null) {
dashboard();
}
return Scaffold(
appBar: AppBar(),
body: Consumer<ConnectivityProvider>(builder: (context, provider, _) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
if (userInfo == null)
provider.isConnected
? OutlinedButton(
child: const Text('Log in with SSO'),
onPressed: () async {
var credential = await authenticate(
client,
scopes: scopes,
);
var userInfo = await credential.getUserInfo();
setState(() {
this.userInfo = userInfo;
});
})
: ReusableTextView(
text: 'Please wait...',
),
],
),
);
}),
);
}
@override
Future<void> dispose() async {
// TODO: implement dispose
// Hive.close();
super.dispose();
timer?.cancel();
}
dashboard() async {
print("dashboarddd");
final ssoprovider =
Provider.of<SsoValidationProvider>(context, listen: false);
String username = userInfo!.name.toString();
String useremailid = userInfo!.email.toString();
String? token = await messaging.getToken();
if (kDebugMode) {
print('Registration Token=$token');
}
print("username : $username");
print("useremailid : $useremailid");
// String os = Platform.operatingSystem; //in your code
// print("OS_is: $os");
// if (Platform.isAndroid) {
// os = "android";
// } else {
// print("OS_is: hiiiii");
// os = "web";
// }
if (kIsWeb) {
// Web specific code
print('Running on web');
os = "web";
} else if (Platform.isAndroid) {
// Non-web (e.g., mobile) specific code
print('running on android');
os = "android";
} else if (Platform.isIOS) {
os = "ios";
} else {
os = "";
}
print("OS_is: $os");
await ssoprovider.ssovalidationrespose(username, useremailid, os, token!);
if (ssoprovider.message == null) {
// showAlertBox("Something went wrong,Please try again");
}
print("user_ssoprovider_response : ${ssoprovider.message!.success}");
print("user_ssoprovider_token : ${ssoprovider.message!.success.token}");
print("user_ssoprovider_name : ${ssoprovider.message!.success.name}");
print("user_ssoprovider_id : ${ssoprovider.message!.success.id}");
print("user_ssoprovider_email : ${ssoprovider.message!.success.email}");
await CustomSharedPreferences.setCustomValue(
ssoprovider.message!.success.token);
await CustomSharedPreferences.setname(ssoprovider.message!.success.email);
await CustomSharedPreferences.setuserid(
ssoprovider.message!.success.id.toString());
await CustomSharedPreferences.setusername(
ssoprovider.message!.success.name);
await SessionManager().setLoggedIn(true);
// ignore: use_build_context_synchronously
Navigator.pushReplacementNamed(context, '/MainPage');
}
}

Some files were not shown because too many files have changed in this diff Show More