@@ -9,7 +9,7 @@ | |||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | |||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" | |||
android:maxSdkVersion="28" /> | |||
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> | |||
<!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />--> | |||
<application | |||
android:name="${applicationName}" | |||
android:label="assetstock" | |||
@@ -21,6 +21,6 @@ | |||
<key>CFBundleVersion</key> | |||
<string>1.0</string> | |||
<key>MinimumOSVersion</key> | |||
<string>8.0</string> | |||
<string>11.0</string> | |||
</dict> | |||
</plist> |
@@ -1,5 +1,5 @@ | |||
# Uncomment this line to define a global platform for your project | |||
# platform :ios, '9.0' | |||
# platform :ios, '11.0' | |||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency. | |||
ENV['COCOAPODS_DISABLE_STATS'] = 'true' | |||
@@ -3,13 +3,14 @@ | |||
archiveVersion = 1; | |||
classes = { | |||
}; | |||
objectVersion = 46; | |||
objectVersion = 50; | |||
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 */; }; | |||
7F97140DDC9766C8BCC9DB1F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB5A9940CDB629A1BBA2BC51 /* Pods_Runner.framework */; }; | |||
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 */; }; | |||
@@ -31,10 +32,12 @@ | |||
/* 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>"; }; | |||
1ADB1407455DE034E10C911C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; 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>"; }; | |||
88873868416AD783785E81C7 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<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; }; | |||
@@ -42,6 +45,8 @@ | |||
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>"; }; | |||
B25627757AF10282201C5B03 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; }; | |||
FB5A9940CDB629A1BBA2BC51 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
/* End PBXFileReference section */ | |||
/* Begin PBXFrameworksBuildPhase section */ | |||
@@ -49,6 +54,7 @@ | |||
isa = PBXFrameworksBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
7F97140DDC9766C8BCC9DB1F /* Pods_Runner.framework in Frameworks */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
@@ -72,6 +78,8 @@ | |||
9740EEB11CF90186004384FC /* Flutter */, | |||
97C146F01CF9000F007C117D /* Runner */, | |||
97C146EF1CF9000F007C117D /* Products */, | |||
E778508E83C915897E28B2CA /* Pods */, | |||
BF2BAC820406AD7785E66AA3 /* Frameworks */, | |||
); | |||
sourceTree = "<group>"; | |||
}; | |||
@@ -106,6 +114,25 @@ | |||
name = "Supporting Files"; | |||
sourceTree = "<group>"; | |||
}; | |||
BF2BAC820406AD7785E66AA3 /* Frameworks */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
FB5A9940CDB629A1BBA2BC51 /* Pods_Runner.framework */, | |||
); | |||
name = Frameworks; | |||
sourceTree = "<group>"; | |||
}; | |||
E778508E83C915897E28B2CA /* Pods */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
B25627757AF10282201C5B03 /* Pods-Runner.debug.xcconfig */, | |||
88873868416AD783785E81C7 /* Pods-Runner.release.xcconfig */, | |||
1ADB1407455DE034E10C911C /* Pods-Runner.profile.xcconfig */, | |||
); | |||
name = Pods; | |||
path = Pods; | |||
sourceTree = "<group>"; | |||
}; | |||
/* End PBXGroup section */ | |||
/* Begin PBXNativeTarget section */ | |||
@@ -113,12 +140,14 @@ | |||
isa = PBXNativeTarget; | |||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; | |||
buildPhases = ( | |||
161D032BEF51F13F0F798179 /* [CP] Check Pods Manifest.lock */, | |||
9740EEB61CF901F6004384FC /* Run Script */, | |||
97C146EA1CF9000F007C117D /* Sources */, | |||
97C146EB1CF9000F007C117D /* Frameworks */, | |||
97C146EC1CF9000F007C117D /* Resources */, | |||
9705A1C41CF9048500538489 /* Embed Frameworks */, | |||
3B06AD1E1E4923F5004D2608 /* Thin Binary */, | |||
B9FAECD78F48C1C5410BD713 /* [CP] Embed Pods Frameworks */, | |||
); | |||
buildRules = ( | |||
); | |||
@@ -135,7 +164,7 @@ | |||
97C146E61CF9000F007C117D /* Project object */ = { | |||
isa = PBXProject; | |||
attributes = { | |||
LastUpgradeCheck = 1020; | |||
LastUpgradeCheck = 1300; | |||
ORGANIZATIONNAME = ""; | |||
TargetAttributes = { | |||
97C146ED1CF9000F007C117D = { | |||
@@ -177,6 +206,28 @@ | |||
/* End PBXResourcesBuildPhase section */ | |||
/* Begin PBXShellScriptBuildPhase section */ | |||
161D032BEF51F13F0F798179 /* [CP] Check Pods Manifest.lock */ = { | |||
isa = PBXShellScriptBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
); | |||
inputFileListPaths = ( | |||
); | |||
inputPaths = ( | |||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock", | |||
"${PODS_ROOT}/Manifest.lock", | |||
); | |||
name = "[CP] Check Pods Manifest.lock"; | |||
outputFileListPaths = ( | |||
); | |||
outputPaths = ( | |||
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
shellPath = /bin/sh; | |||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | |||
showEnvVarsInLog = 0; | |||
}; | |||
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { | |||
isa = PBXShellScriptBuildPhase; | |||
buildActionMask = 2147483647; | |||
@@ -205,6 +256,23 @@ | |||
shellPath = /bin/sh; | |||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; | |||
}; | |||
B9FAECD78F48C1C5410BD713 /* [CP] Embed Pods Frameworks */ = { | |||
isa = PBXShellScriptBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
); | |||
inputFileListPaths = ( | |||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", | |||
); | |||
name = "[CP] Embed Pods Frameworks"; | |||
outputFileListPaths = ( | |||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
shellPath = /bin/sh; | |||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; | |||
showEnvVarsInLog = 0; | |||
}; | |||
/* End PBXShellScriptBuildPhase section */ | |||
/* Begin PBXSourcesBuildPhase section */ | |||
@@ -241,7 +309,6 @@ | |||
/* Begin XCBuildConfiguration section */ | |||
249021D3217E4FDB00AE95B9 /* Profile */ = { | |||
isa = XCBuildConfiguration; | |||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; | |||
buildSettings = { | |||
ALWAYS_SEARCH_USER_PATHS = NO; | |||
CLANG_ANALYZER_NONNULL = YES; | |||
@@ -281,7 +348,7 @@ | |||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | |||
GCC_WARN_UNUSED_FUNCTION = YES; | |||
GCC_WARN_UNUSED_VARIABLE = YES; | |||
IPHONEOS_DEPLOYMENT_TARGET = 8.0; | |||
IPHONEOS_DEPLOYMENT_TARGET = 11.0; | |||
MTL_ENABLE_DEBUG_INFO = NO; | |||
SDKROOT = iphoneos; | |||
SUPPORTED_PLATFORMS = iphoneos; | |||
@@ -303,7 +370,10 @@ | |||
"$(PROJECT_DIR)/Flutter", | |||
); | |||
INFOPLIST_FILE = Runner/Info.plist; | |||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | |||
LD_RUNPATH_SEARCH_PATHS = ( | |||
"$(inherited)", | |||
"@executable_path/Frameworks", | |||
); | |||
LIBRARY_SEARCH_PATHS = ( | |||
"$(inherited)", | |||
"$(PROJECT_DIR)/Flutter", | |||
@@ -318,7 +388,6 @@ | |||
}; | |||
97C147031CF9000F007C117D /* Debug */ = { | |||
isa = XCBuildConfiguration; | |||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; | |||
buildSettings = { | |||
ALWAYS_SEARCH_USER_PATHS = NO; | |||
CLANG_ANALYZER_NONNULL = YES; | |||
@@ -364,7 +433,7 @@ | |||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | |||
GCC_WARN_UNUSED_FUNCTION = YES; | |||
GCC_WARN_UNUSED_VARIABLE = YES; | |||
IPHONEOS_DEPLOYMENT_TARGET = 8.0; | |||
IPHONEOS_DEPLOYMENT_TARGET = 11.0; | |||
MTL_ENABLE_DEBUG_INFO = YES; | |||
ONLY_ACTIVE_ARCH = YES; | |||
SDKROOT = iphoneos; | |||
@@ -374,7 +443,6 @@ | |||
}; | |||
97C147041CF9000F007C117D /* Release */ = { | |||
isa = XCBuildConfiguration; | |||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; | |||
buildSettings = { | |||
ALWAYS_SEARCH_USER_PATHS = NO; | |||
CLANG_ANALYZER_NONNULL = YES; | |||
@@ -414,7 +482,7 @@ | |||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | |||
GCC_WARN_UNUSED_FUNCTION = YES; | |||
GCC_WARN_UNUSED_VARIABLE = YES; | |||
IPHONEOS_DEPLOYMENT_TARGET = 8.0; | |||
IPHONEOS_DEPLOYMENT_TARGET = 11.0; | |||
MTL_ENABLE_DEBUG_INFO = NO; | |||
SDKROOT = iphoneos; | |||
SUPPORTED_PLATFORMS = iphoneos; | |||
@@ -437,7 +505,10 @@ | |||
"$(PROJECT_DIR)/Flutter", | |||
); | |||
INFOPLIST_FILE = Runner/Info.plist; | |||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | |||
LD_RUNPATH_SEARCH_PATHS = ( | |||
"$(inherited)", | |||
"@executable_path/Frameworks", | |||
); | |||
LIBRARY_SEARCH_PATHS = ( | |||
"$(inherited)", | |||
"$(PROJECT_DIR)/Flutter", | |||
@@ -464,7 +535,10 @@ | |||
"$(PROJECT_DIR)/Flutter", | |||
); | |||
INFOPLIST_FILE = Runner/Info.plist; | |||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | |||
LD_RUNPATH_SEARCH_PATHS = ( | |||
"$(inherited)", | |||
"@executable_path/Frameworks", | |||
); | |||
LIBRARY_SEARCH_PATHS = ( | |||
"$(inherited)", | |||
"$(PROJECT_DIR)/Flutter", | |||
@@ -503,4 +577,4 @@ | |||
/* End XCConfigurationList section */ | |||
}; | |||
rootObject = 97C146E61CF9000F007C117D /* Project object */; | |||
} | |||
} |
@@ -2,6 +2,6 @@ | |||
<Workspace | |||
version = "1.0"> | |||
<FileRef | |||
location = "group:Runner.xcodeproj"> | |||
location = "self:"> | |||
</FileRef> | |||
</Workspace> |
@@ -1,6 +1,6 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<Scheme | |||
LastUpgradeVersion = "1020" | |||
LastUpgradeVersion = "1300" | |||
version = "1.3"> | |||
<BuildAction | |||
parallelizeBuildables = "YES" | |||
@@ -4,4 +4,7 @@ | |||
<FileRef | |||
location = "group:Runner.xcodeproj"> | |||
</FileRef> | |||
<FileRef | |||
location = "group:Pods/Pods.xcodeproj"> | |||
</FileRef> | |||
</Workspace> |
@@ -41,5 +41,7 @@ | |||
</array> | |||
<key>UIViewControllerBasedStatusBarAppearance</key> | |||
<false/> | |||
<key>CADisableMinimumFrameDurationOnPhone</key> | |||
<true/> | |||
</dict> | |||
</plist> |
@@ -529,7 +529,7 @@ class _AssetDetailsState extends State<AssetDetails> with TickerProviderStateMix | |||
children: <Widget>[ | |||
Expanded( | |||
flex: 5, | |||
child: FlatButton( | |||
child: TextButton( | |||
onPressed: ()async{ | |||
if(barCode.text!=''&&prefixCode.text!='')await findAsset(prefixCode.text+barCode.text,silent: true); | |||
else _asset.tag_number = null; | |||
@@ -546,13 +546,13 @@ class _AssetDetailsState extends State<AssetDetails> with TickerProviderStateMix | |||
title: Text('Append New Asset'), | |||
content: Text('${(widget.no==null)?'Insert':'Update'} brand new asset?'), | |||
actions: <Widget>[ | |||
FlatButton( | |||
TextButton( | |||
onPressed: ()async{ | |||
Navigator.pop(context,true); | |||
}, | |||
child: Text('Save'), | |||
), | |||
FlatButton( | |||
TextButton( | |||
onPressed: ()async{ | |||
Navigator.pop(context,false); | |||
}, | |||
@@ -591,19 +591,23 @@ class _AssetDetailsState extends State<AssetDetails> with TickerProviderStateMix | |||
util.showToast('ERROR', 'Please complete the asset data'); | |||
} | |||
}, | |||
color: Colors.green, | |||
style: TextButton.styleFrom( | |||
backgroundColor: Colors.green, | |||
), | |||
child: Container(alignment: Alignment.center,height: 50, | |||
child: Text('Save')), | |||
child: Text('Save',style: TextStyle(color: Colors.white),)), | |||
), | |||
), | |||
Expanded( | |||
flex: 5, | |||
child: FlatButton( | |||
child: TextButton( | |||
style: TextButton.styleFrom( | |||
backgroundColor: Colors.red, | |||
), | |||
onPressed: (){ | |||
Navigator.pop(context); | |||
}, | |||
color: Colors.red, | |||
child: Container(alignment: Alignment.center,height:50,child: Text('Cancel')), | |||
child: Container(alignment: Alignment.center,height:50,child: Text('Cancel',style: TextStyle(color: Colors.white))), | |||
), | |||
), | |||
], | |||
@@ -53,7 +53,7 @@ class _AssetLogsState extends State<AssetLogs> { | |||
title: Text('Pick nonAuditAsset'), | |||
content: Text("Select Asset ${idxAsset.tag_number}"), | |||
actions: [ | |||
FlatButton( | |||
TextButton( | |||
onPressed: (){ | |||
Navigator.pop(context,true); | |||
}, | |||
@@ -48,18 +48,18 @@ class _HomeState extends State<Home> { | |||
super.initState(); | |||
WidgetsBinding.instance.addPostFrameCallback((_) async { | |||
// await loadMenu(); | |||
final androidVersion = await DeviceInfoPlugin().androidInfo; | |||
if ((androidVersion.version.sdkInt ?? 0) >= 30) { | |||
await util.permissionCheck(this.context,pHandler.Permission.manageExternalStorage,()async{print("storage permit granted!");},customMessage: " untuk menyimpan data backup"); | |||
} else { | |||
// final androidVersion = await DeviceInfoPlugin().androidInfo; | |||
// if ((androidVersion.version.sdkInt ?? 0) >= 30) { | |||
// await util.permissionCheck(this.context,pHandler.Permission.manageExternalStorage,()async{print("storage permit granted!");},customMessage: " untuk menyimpan data backup"); | |||
// } else { | |||
await util.permissionCheck(this.context,pHandler.Permission.storage,()async{print("storage permit granted!");},customMessage: " untuk menyimpan data backup"); | |||
} | |||
// } | |||
}); | |||
} | |||
clearData(context)async{ | |||
String errMsg; | |||
Directory documentsDirectory = await getExternalStorageDirectory(); | |||
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |||
String path = join(documentsDirectory.path, "assets.db"); | |||
File db = File(path); | |||
if(db.existsSync()){ | |||
@@ -72,7 +72,7 @@ class _HomeState extends State<Home> { | |||
title: Text('Clear Data ?'), | |||
content: Text('Proceed to clear any remaining units data on this device?'), | |||
actions: <Widget>[ | |||
FlatButton( | |||
TextButton( | |||
child: Text('Proceed'), | |||
onPressed: ()async{ | |||
util.showLoading(context); | |||
@@ -112,7 +112,7 @@ class _HomeState extends State<Home> { | |||
util.showToast(errMsg==null?"SUCCESS":"ERROR",errMsg??'Data Cleared'); | |||
}, | |||
), | |||
FlatButton( | |||
TextButton( | |||
child: Text('Cancel'), | |||
onPressed: (){Navigator.pop(context,false);}, | |||
) | |||
@@ -131,7 +131,7 @@ class _HomeState extends State<Home> { | |||
padding: const EdgeInsets.only(bottom:45.0), | |||
child: FloatingActionButton( | |||
onPressed: ()async{ | |||
Directory documentsDirectory = await getExternalStorageDirectory(); | |||
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |||
String path = join(documentsDirectory.path, "assets.db"); | |||
File db = File(path); | |||
if(db.existsSync()){ | |||
@@ -214,7 +214,7 @@ class _HomeState extends State<Home> { | |||
}, | |||
), | |||
actions: <Widget>[ | |||
FlatButton( | |||
TextButton( | |||
child: Text('OK'), | |||
onPressed: (){ | |||
prefs.setString(keyClass.hostAddress,(hostAddress.text=='')?'https://asset.thamringroup.web.id':hostAddress.text); | |||
@@ -246,7 +246,7 @@ class _HomeState extends State<Home> { | |||
], | |||
)); | |||
if(isBackup??false){ | |||
var result = await DBHelper.database.backupDb(context); | |||
var result = await DBHelper.database.backupDb(context:context); | |||
util.showToast(result["STATUS"]==1?'NORMAL':'ERROR', result['MSG']); | |||
} | |||
} | |||
@@ -281,7 +281,7 @@ class _HomeState extends State<Home> { | |||
if(isRestore??false){ | |||
var response; | |||
bool isclear; | |||
Directory documentsDirectory = await getExternalStorageDirectory(); | |||
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |||
String path = join(documentsDirectory.path, "assets.db"); | |||
File db = File(path); | |||
if(db.existsSync()){ | |||
@@ -375,13 +375,13 @@ class _HomeState extends State<Home> { | |||
})), | |||
), | |||
actions: <Widget>[ | |||
FlatButton( | |||
TextButton( | |||
onPressed: ()async{ | |||
Navigator.pop(context,true); | |||
}, | |||
child: Text('Next'), | |||
), | |||
FlatButton( | |||
TextButton( | |||
onPressed: ()async{ | |||
Navigator.pop(context,false); | |||
}, | |||
@@ -418,13 +418,13 @@ class _HomeState extends State<Home> { | |||
})), | |||
), | |||
actions: <Widget>[ | |||
FlatButton( | |||
TextButton( | |||
onPressed: ()async{ | |||
Navigator.pop(context,true); | |||
}, | |||
child: Text('Get'), | |||
), | |||
FlatButton( | |||
TextButton( | |||
onPressed: ()async{ | |||
Navigator.pop(context,false); | |||
}, | |||
@@ -512,7 +512,7 @@ class _HomeState extends State<Home> { | |||
child: InkWell( | |||
onTap: ()async{ | |||
await Future.delayed(Duration(milliseconds: 300)); | |||
Directory documentsDirectory = await getExternalStorageDirectory(); | |||
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |||
String path = join(documentsDirectory.path, "assets.db"); | |||
File db = File(path); | |||
if(db.existsSync()) Navigator.pushNamed(context, '/stocking'); | |||
@@ -544,7 +544,7 @@ class _HomeState extends State<Home> { | |||
InkWell( | |||
onTap: ()async{ | |||
final file = File( | |||
"${(await getExternalStorageDirectory()).path}/assets.db"); | |||
"${(await getApplicationDocumentsDirectory()).path}/assets.db"); | |||
if(file.existsSync()){ | |||
TextEditingController sendingUser = new TextEditingController(); | |||
sendingUser.text = prefs.getString(keyClass.user)??''; | |||
@@ -557,7 +557,7 @@ class _HomeState extends State<Home> { | |||
controller: sendingUser, | |||
), | |||
actions: [ | |||
FlatButton( | |||
TextButton( | |||
child: Text('Send'), | |||
onPressed: ()async{ | |||
if(sendingUser.text!='') Navigator.pop(context,true); | |||
@@ -631,7 +631,7 @@ class _HomeState extends State<Home> { | |||
), | |||
InkWell( | |||
onTap: ()async{ | |||
Directory documentsDirectory = await getExternalStorageDirectory(); | |||
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |||
String path = join(documentsDirectory.path, "assets.db"); | |||
File db = File(path); | |||
if(db.existsSync()) await clearData(context); | |||
@@ -392,7 +392,7 @@ class _StockingState extends State<Stocking> with TickerProviderStateMixin { | |||
title: Text('Delete Asset?'), | |||
content: Text("Delete this asset (${insertAsset[index].tag_number})?"), | |||
actions: [ | |||
FlatButton( | |||
TextButton( | |||
child: Text('Delete'), | |||
onPressed: ()async{ | |||
var res = await DBHelper.database.deleteInsertAsset(insertAsset[index].no); | |||
@@ -25,7 +25,7 @@ class DBHelper{ | |||
return _db; | |||
} | |||
backupDb(context) async{ | |||
backupDb({context}) async{ | |||
var result = {"STATUS":0,"MSG":"Backup gagal!"}; | |||
var stock_id = prefs.getString(keyClass.dbName)??''; | |||
if(stock_id != ''){ | |||
@@ -39,9 +39,9 @@ class DBHelper{ | |||
await prefs.remove(keyClass.backup_stock_id); | |||
if(stock_id !='' && stock_id != null ) await prefs.setString(keyClass.backup_stock_id,stock_id); | |||
//backupDatabase | |||
print(["aaaaaa",dbPath]); | |||
String backupPath = join(dbPath.substring(0,dbPath.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_assets.db"); | |||
print("bbbbbb"); | |||
// String backupPath = join(dbPath.substring(0,dbPath.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_assets.db"); | |||
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |||
String backupPath = join(documentsDirectory.path, "${prefs.getString(keyClass.backup_stock_id)}_assets.db"); | |||
File backupFile = new File(backupPath); | |||
File dbFile = File(dbPath); | |||
if(dbFile.existsSync()){ | |||
@@ -71,8 +71,9 @@ class DBHelper{ | |||
var result = {"STATUS":0,"MSG":"File Backup tidak ditemukan!"}; | |||
if(prefs.getString(keyClass.backup_stock_id)!=null){ | |||
await util.permissionCheck(context,pHandler.Permission.storage,()async{ | |||
Directory documentsDirectory = await getExternalStorageDirectory(); | |||
String backupPath = join(documentsDirectory.path.substring(0,documentsDirectory.path.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_assets.db"); | |||
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |||
// String backupPath = join(documentsDirectory.path.substring(0,documentsDirectory.path.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_assets.db"); | |||
String backupPath = join(documentsDirectory.path, "${prefs.getString(keyClass.backup_stock_id)}_assets.db"); | |||
File backupdbFile = File(backupPath); | |||
if(backupdbFile.existsSync()){ | |||
File dbFile = new File(join(documentsDirectory.path, "assets.db")); | |||
@@ -88,7 +89,7 @@ class DBHelper{ | |||
} | |||
initDb() async { | |||
Directory documentsDirectory = await getExternalStorageDirectory(); | |||
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |||
String path = join(documentsDirectory.path, "assets.db"); | |||
var theDb = await openDatabase(path, version: 1,onCreate: _onCreate); | |||
return theDb; | |||
@@ -102,17 +103,27 @@ class DBHelper{ | |||
} | |||
void _onCreate(Database db, int version) async { | |||
Directory documentsDirectory = await getExternalStorageDirectory(); | |||
Directory documentsDirectory = await getApplicationDocumentsDirectory(); | |||
String path = join(documentsDirectory.path, "assets.db"); | |||
File file = File(path); | |||
print('Database created, ${file.lengthSync()}'); | |||
} | |||
autoBackup(database)async{ | |||
var checkCount = await database.query(tableName.insert,where: "${columnName.blob} is not null"); | |||
return checkCount.isNotEmpty&& checkCount.length%5==0; | |||
} | |||
insertAsset(Asset newAsset) async{ | |||
try{ | |||
final database = await db; | |||
await database.rawInsert("Insert into ${tableName.insert} (${columnName.tag_number},${columnName.blob},${columnName.keterangan}) VALUES(?,?,?)", [newAsset.tag_number,newAsset.blob,newAsset.keterangan]); | |||
await database.rawQuery("UPDATE ${tableName.ref} SET ${columnName.flag} = 'TRUE' WHERE ${columnName.tag_number} = '${newAsset.tag_number}'"); | |||
if(await autoBackup(database)){ | |||
backupDb(); | |||
} | |||
return true; | |||
} | |||
catch(e){ | |||
@@ -125,6 +136,11 @@ class DBHelper{ | |||
try{ | |||
final database = await db; | |||
await database.rawUpdate("Update ${tableName.insert} SET ${columnName.blob} = ?, ${columnName.tag_number} = ?, ${columnName.keterangan} = ? WHERE ${columnName.no} = ?", [newAsset.blob,newAsset.tag_number,newAsset.keterangan,newAsset.no]); | |||
if(await autoBackup(database)){ | |||
backupDb(); | |||
} | |||
return true; | |||
} | |||
catch(e){ | |||
@@ -49,7 +49,7 @@ class file_Trans_Handler { | |||
_progress.add(0.0); | |||
print('Finish Download'); | |||
final file = File( | |||
"${(await getExternalStorageDirectory()).path}/$fileName"); | |||
"${(await getApplicationDocumentsDirectory()).path}/$fileName"); | |||
await file.writeAsBytes(_bytes); | |||
_path = file.path; | |||
}) | |||
@@ -72,7 +72,7 @@ class file_Trans_Handler { | |||
List<int> _bytes = []; | |||
_finish = false; | |||
final file = File( | |||
"${(await getExternalStorageDirectory()).path}/$fileName"); | |||
"${(await getApplicationDocumentsDirectory()).path}/$fileName"); | |||
_total = file.lengthSync(); | |||
print(_total/1024); | |||
try{ | |||
@@ -13,7 +13,7 @@ class Util{ | |||
permissionCheck(context,pHandler.Permission permissionType,ifGranted,{customMessage=''})async{ | |||
pHandler.PermissionStatus permission = await permissionType.status; | |||
if(permission!= pHandler.PermissionStatus.granted){ | |||
if(permission!= pHandler.PermissionStatus.granted && context != null){ | |||
if(permission== pHandler.PermissionStatus.denied || permission== pHandler.PermissionStatus.restricted){ | |||
showToast('NORMAL', '${permissionType.toString().substring(permissionType.toString().lastIndexOf('.')+1)} permission is needed$customMessage. Please grant the permission!'); | |||
await Future.delayed(Duration(seconds: 3)); | |||
@@ -21,7 +21,7 @@ packages: | |||
name: async | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "2.8.2" | |||
version: "2.9.0" | |||
barcode_scan2: | |||
dependency: "direct main" | |||
description: | |||
@@ -42,21 +42,14 @@ packages: | |||
name: characters | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "1.2.0" | |||
charcode: | |||
dependency: transitive | |||
description: | |||
name: charcode | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "1.3.1" | |||
version: "1.2.1" | |||
clock: | |||
dependency: transitive | |||
description: | |||
name: clock | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "1.1.0" | |||
version: "1.1.1" | |||
collection: | |||
dependency: transitive | |||
description: | |||
@@ -133,7 +126,7 @@ packages: | |||
name: fake_async | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "1.3.0" | |||
version: "1.3.1" | |||
ffi: | |||
dependency: transitive | |||
description: | |||
@@ -267,14 +260,14 @@ packages: | |||
name: matcher | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "0.12.11" | |||
version: "0.12.12" | |||
material_color_utilities: | |||
dependency: transitive | |||
description: | |||
name: material_color_utilities | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "0.1.4" | |||
version: "0.1.5" | |||
matrix_gesture_detector: | |||
dependency: "direct main" | |||
description: | |||
@@ -288,14 +281,14 @@ packages: | |||
name: meta | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "1.7.0" | |||
version: "1.8.0" | |||
path: | |||
dependency: transitive | |||
description: | |||
name: path | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "1.8.1" | |||
version: "1.8.2" | |||
path_provider: | |||
dependency: "direct main" | |||
description: | |||
@@ -489,7 +482,7 @@ packages: | |||
name: source_span | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "1.8.2" | |||
version: "1.9.0" | |||
sqflite: | |||
dependency: "direct main" | |||
description: | |||
@@ -524,7 +517,7 @@ packages: | |||
name: string_scanner | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "1.1.0" | |||
version: "1.1.1" | |||
synchronized: | |||
dependency: transitive | |||
description: | |||
@@ -538,14 +531,14 @@ packages: | |||
name: term_glyph | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "1.2.0" | |||
version: "1.2.1" | |||
test_api: | |||
dependency: transitive | |||
description: | |||
name: test_api | |||
url: "https://pub.dartlang.org" | |||
source: hosted | |||
version: "0.4.9" | |||
version: "0.4.12" | |||
typed_data: | |||
dependency: transitive | |||
description: | |||
@@ -13,7 +13,7 @@ description: Application to check assets | |||
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. | |||
# Read more about iOS versioning at | |||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html | |||
version: 1.0.4+6 | |||
version: 1.0.5+7 | |||
environment: | |||
sdk: ">=2.7.0 <3.0.0" | |||