Browse Source

show error ketika dak ado yg perlu di audit

master
jefry 2 years ago
parent
commit
482a5efe75
6 changed files with 69 additions and 234 deletions
  1. +1
    -1
      android/app/src/main/AndroidManifest.xml
  2. +16
    -8
      lib/Util/DBHelper.dart
  3. +6
    -6
      lib/Util/download_Upload_Handler.dart
  4. +14
    -78
      lib/home_page.dart
  5. +20
    -129
      lib/login_page.dart
  6. +12
    -12
      pubspec.lock

+ 1
- 1
android/app/src/main/AndroidManifest.xml View File

@@ -11,7 +11,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>-->

<application
android:name="${applicationName}"


+ 16
- 8
lib/Util/DBHelper.dart View File

@@ -25,19 +25,22 @@ class DBHelper {
if(stock_id != ''){
await util.permissionCheck(context,pHandler.Permission.storage,()async{
try{
// if(dbPath == null || dbPath == ''){
final database = await db;
var dbPath = database.path;
await DBHelper.database.closeDb();
// }
await prefs.remove(keyClass.backup_stock_id);
if(stock_id !='' && stock_id != null ) await prefs.setString(keyClass.backup_stock_id,stock_id);
//backupDatabase
String backupPath = join(dbPath.substring(0,dbPath.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db");

io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
String backupPath = join(documentsDirectory.path, "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db");

// dak jadi pakek external storage karena full access dak dibolehke playstore
// String backupPath = join(dbPath.substring(0,dbPath.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db");

io.File backupFile = new io.File(backupPath);
io.File dbFile = io.File(dbPath);
if(dbFile.existsSync()){
// dbFile.copySync(backupPath);
Uint8List byte = dbFile.readAsBytesSync();
backupFile.writeAsBytesSync(byte);
result = {"STATUS":1,"MSG":"Backup Berhasil!"};
@@ -60,7 +63,7 @@ class DBHelper {
return result;
}
initDb() async {
io.Directory documentsDirectory = await getExternalStorageDirectory();
io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "UnitStocking.db");
var theDb = await openDatabase(path, version: 1,onCreate: _onCreate);
return theDb;
@@ -70,8 +73,13 @@ 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{
io.Directory documentsDirectory = await getExternalStorageDirectory();
String backupPath = join(documentsDirectory.path.substring(0,documentsDirectory.path.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db");
io.Directory documentsDirectory = await getApplicationDocumentsDirectory();

String backupPath = join(documentsDirectory.path, "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db");

// dak jadi karena ribet ngurusnyo
// String backupPath = join(documentsDirectory.path.substring(0,documentsDirectory.path.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db");

io.File backupdbFile = io.File(backupPath);
if(backupdbFile.existsSync()){
io.File dbFile = new io.File(join(documentsDirectory.path, "UnitStocking.db"));
@@ -98,7 +106,7 @@ class DBHelper {
}

_onCreate(Database db, int version) async {
io.Directory documentsDirectory = await getExternalStorageDirectory();
io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "UnitStocking.db");
io.File file = io.File(path);
print('Database created, ${file.lengthSync()}');


+ 6
- 6
lib/Util/download_Upload_Handler.dart View File

@@ -39,7 +39,6 @@ class file_Trans_Handler {
else _error = e.message??e;
// print("mainthrow $_error");
}

Request req = new Request('GET', Uri.parse(link));
// req.headers = '';
_response = await httpClient.send(req).timeout(
@@ -61,6 +60,7 @@ class file_Trans_Handler {
// this.cancel();
// cancel(); //stop stream
String resString = utf8.decode(value);
print(resString);
// if(util.htmlErrorTitle(resString)!=""){
// _error = util.htmlErrorTitle(resString);
// }
@@ -73,7 +73,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;
}
@@ -114,7 +114,7 @@ class file_Trans_Handler {
httpClient = await util.getOauth2Client();
oauth2.Credentials tokenRestData = oauth2.Credentials.fromJson(prefs.getString(keyClass.rest_data));
final file = File(
"${(await getExternalStorageDirectory()).path}/$fileName");
"${(await getApplicationDocumentsDirectory()).path}/$fileName");
String mimeType = 'application/vnd.sqlite3';
if(file.existsSync()){
Uint8List byte = file.readAsBytesSync();
@@ -227,11 +227,11 @@ class file_Trans_Handler {
request.files.add(
await MultipartFile.fromPath(
'picture',
"${(await getExternalStorageDirectory()).path}/$fileName"
"${(await getApplicationDocumentsDirectory()).path}/$fileName"
)
);
_response = await httpClient.send(request);
_total = File("${(await getExternalStorageDirectory()).path}/$fileName").lengthSync();
_total = File("${(await getApplicationDocumentsDirectory()).path}/$fileName").lengthSync();
dlulStream = _response.stream.listen((value) {
_bytes.addAll(value);
print('upload ${_bytes.length/_total}');
@@ -241,7 +241,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;
})


+ 14
- 78
lib/home_page.dart View File

@@ -59,7 +59,7 @@ class _HomePageState extends State<HomePage> {
util.showLoading(context);
await Future.sync(()async{
try{
Directory documentsDirectory = await getExternalStorageDirectory();
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "UnitStocking.db");
File db = File(path);
if(db.existsSync()){
@@ -105,7 +105,7 @@ class _HomePageState extends State<HomePage> {
if(value != null)await prefs.setString(keyClass.stock_id, value.value);
}
String stock_taking_id = prefs.getString(keyClass.stock_id);
if(prefs.getString(keyClass.backup_stock_id) == null) prefs.setString(keyClass.backup_stock_id,stock_taking_id);
if(prefs.getString(keyClass.backup_stock_id) == null && stock_taking_id!= null) prefs.setString(keyClass.backup_stock_id,stock_taking_id);
if(company!=null&&stock_taking_id!=null){
var result = await util.JsonDataPostRaw({"company":company,"stockTakingId":stock_taking_id}, '${prefs.getString(keyClass.hostAddress)}/stock_taking/state/');
if(result['STATUS']==1){
@@ -125,12 +125,15 @@ class _HomePageState extends State<HomePage> {
lastUpload = prefs.getString(keyClass.lastUpload)??'';
WidgetsBinding.instance.addPostFrameCallback((_) async {
await _check_Update();
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 {
// dak jadi pakek external karena butuh Full acces File yang ribet ngorosnyo di appstore dan playstore
// final androidVersion = await DeviceInfoPlugin().androidInfo;
// if ((androidVersion.version.sdkInt ?? 0) >= 30) {
// print(1);
// await util.permissionCheck(this.context,pHandler.Permission.manageExternalStorage,()async{print("storage permit granted!");},customMessage: " untuk menyimpan data backup ke external storage!!");
// } else {
// print(3);
await util.permissionCheck(this.context,pHandler.Permission.storage,()async{print("storage permit granted!");},customMessage: " untuk menyimpan data backup");
}
// }
});
}

@@ -263,7 +266,7 @@ class _HomePageState extends State<HomePage> {
items: result['DATA'].map<DropdownMenuItem<dynamic>>((item){
return DropdownMenuItem(
value: item['RETURN_VALUE'],
child: Text(item["DISPLAY_VALUE"]),
child: Container(width: MediaQuery.of(context).size.width*0.55,child: Text(item["DISPLAY_VALUE"])),
);
}).toList(),
),
@@ -291,7 +294,7 @@ class _HomePageState extends State<HomePage> {
lastDownload = '';
timeString = '';
try{
Directory documentsDirectory = await getExternalStorageDirectory();
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "UnitStocking.db");
File db = File(path);
if(db.existsSync()){
@@ -319,73 +322,6 @@ class _HomePageState extends State<HomePage> {
),
),
),
// AlertDialog(
// title: Text('Set Cabang'),
// content: DropdownButtonFormField(
// value: selected,
// onChanged: (value){
// setState(() {
// selected = value;
// });
// },
// items: result['DATA'].map<DropdownMenuItem<dynamic>>((item){
// return DropdownMenuItem(
// value: item['RETURN_VALUE'],
// child: Text(item["DISPLAY_VALUE"]),
// );
// }).toList(),
// ),
// actions: <Widget>[
// TextButton(
// child: Text('OK'),
// onPressed: ()async{
// if(selected!=prefs.getString(keyClass.cabang_id)){
// prefs.setString(keyClass.cabang_id,selected);
// await Future.sync(()async{
// await prefs.remove(keyClass.lastDownload);
// await prefs.remove(keyClass.lastUpload);
// await prefs.remove(keyClass.targetProccess);
// await prefs.remove(keyClass.submitProccess);
// lastUpload = '';
// lastDownload = '';
// timeString = '';
//// var result = await DBHelper.database.deleteAll();
//// if(result!=null) {
//// await DBHelper.database.closeDb();
//// if(result!=null){
// try{
// Directory documentsDirectory = await getExternalStorageDirectory();
// String path = join(documentsDirectory.path, "UnitStocking.db");
// File db = File(path);
// if(db.existsSync()){
// db.deleteSync();
// }
// }
// catch(e){
// print(e);
// util.showFlushbar(context, 'Failed to delete database file',color: Colors.red);
// }
//// }
//// else{
//// errMsg = 'Failed to clear unit data';
//// }
//// }
//// else{
//// errMsg = 'Failed to clear unit data';
//// }
// });
// Navigator.pop(context,true);
// }
// else{
// Navigator.pop(context,false);
// }
//// util.showLoading(context);
//
//// Navigator.pop(context);
// },
// )
// ],
// ),
));
}
else{
@@ -741,7 +677,7 @@ class _HomePageState extends State<HomePage> {
if(isRestore??false){
var response;
bool isclear;
Directory documentsDirectory = await getExternalStorageDirectory();
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "UnitStocking.db");
File db = File(path);
if(db.existsSync()){
@@ -859,7 +795,7 @@ class _HomePageState extends State<HomePage> {
a.start();
await Future.delayed(Duration(milliseconds: 200));
bool isclear;
Directory documentsDirectory = await getExternalStorageDirectory();
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "UnitStocking.db");
File db = File(path);
if(db.existsSync()){


+ 20
- 129
lib/login_page.dart View File

@@ -101,6 +101,7 @@ class _LoginPageState extends State<LoginPage> {
return false;
},
child: Container(
padding: EdgeInsets.only(bottom: MediaQuery.of(context).size.width*0.1),
decoration: BoxDecoration(
color: Colors.white
),
@@ -200,19 +201,8 @@ class _LoginPageState extends State<LoginPage> {
),
),
),
SizedBox(height: 30,),
TextButton(
onPressed: Login,
style: TextButton.styleFrom(
backgroundColor: Colors.indigo,
padding: EdgeInsets.all(15),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(100.0),
side: BorderSide(color: Colors.indigo)
),
),
child: Container(width: MediaQuery.of(context).size.width*0.7,child: Text('Login',textAlign: TextAlign.center,style: TextStyle(color: Colors.white,fontSize: 21),)),
)
// SizedBox(height: 30,),

],
),
),
@@ -291,7 +281,7 @@ class _LoginPageState extends State<LoginPage> {
},
items: cabangDrop.map<DropdownMenuItem<dynamic>>((item)=>DropdownMenuItem(
value: item['RETURN_VALUE'],
child: Text(item["DISPLAY_VALUE"]),
child: Container(width: MediaQuery.of(context).size.width*0.55,child: Text(item["DISPLAY_VALUE"])),
)).toList(),
),
),
@@ -338,121 +328,22 @@ class _LoginPageState extends State<LoginPage> {
),
),
),
bottomSheet:
Padding(
padding: EdgeInsets.only(bottom: MediaQuery.of(context).size.width*0.06,left: MediaQuery.of(context).size.width*0.1,right: MediaQuery.of(context).size.width*0.1),
child: TextButton(
onPressed: Login,
style: TextButton.styleFrom(
backgroundColor: Colors.indigo,
padding: EdgeInsets.all(15),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(100.0),
side: BorderSide(color: Colors.indigo)
),
),
child: Container(width: MediaQuery.of(context).size.width,child: Text('Login',textAlign: TextAlign.center,style: TextStyle(color: Colors.white,fontSize: 21),)),
),
),
);
// }
// else{
// return WillPopScope(
// onWillPop: ()async{
// setState(() {
// prefs.setBool(keyClass.logged_in, false);
// prefs.remove(keyClass.cabang_id);
// prefs.remove(keyClass.company);
// prefs.remove(keyClass.loginId);
// });
// return false;
// },
// child: Material(
// child: Container(
// color: Colors.grey.withOpacity(0.7),
// child: Center(
// child: Container(
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.circular(5)
// ),
// height: MediaQuery.of(context).size.height/3.2,
// width: MediaQuery.of(context).size.width*0.75,
// child: Column(
// children: <Widget>[
// Flexible(
// flex:3,
// child: Container(
// padding: EdgeInsets.only(top:10,left: 10,right: 10),
// alignment: Alignment.center,
// decoration: BoxDecoration(
//// color: Colors.indigo,
// borderRadius: BorderRadius.only(topLeft: Radius.circular(5),topRight: Radius.circular(5))
// ),
// child: Column(
// mainAxisSize: MainAxisSize.min,
// crossAxisAlignment: CrossAxisAlignment.center,
// children: <Widget>[
// Icon(Icons.business,size: 70,color: Colors.indigo,),
// SizedBox(height: 5,),
// Text('Pilih Cabang',style: TextStyle(fontWeight: FontWeight.bold,fontSize: 16,color: Colors.indigo),)
// ],
// ),
// ),
// ),
// Flexible(
// flex: 1,
// child: Container(
// padding: EdgeInsets.only(left: 20,right: 20),
// alignment: Alignment.centerLeft,
// child: Theme(
// data: ThemeData(
// canvasColor: Colors.white,
// primaryColor: Colors.indigo,
// accentColor: Colors.indigo,
// hintColor: Colors.indigo
// ),
// child: DropdownButtonFormField(
// style: TextStyle(color: Colors.black.withOpacity(0.6),fontWeight: FontWeight.w500,fontSize: 14,),
// decoration: InputDecoration(
// contentPadding: EdgeInsets.all(8.0),
// ),
// value: selected,
// onChanged: (value){
// setState(() {
// selected = value;
// });
// },
// items: cabangDrop.map<DropdownMenuItem<dynamic>>((item)=>DropdownMenuItem(
// value: item['RETURN_VALUE'],
// child: Text(item["DISPLAY_VALUE"]),
// )).toList(),
// ),
// ),
// ),
// ),
// Flexible(
// flex: 1,
// child: Container(
// child: Row(
// mainAxisAlignment: MainAxisAlignment.end,
// children: <Widget>[
// ButtonTheme(
// minWidth: 10,
// child: TextButton(
// onPressed: (){
// prefs.setString(keyClass.cabang_id, selected);
// Navigator.pushNamed(context, '/home');
// },
// child: Text('Set',style: TextStyle(color: Colors.indigo),),
// ),
// ),
// TextButton(
// onPressed: (){
// setState(() {
// prefs.setBool(keyClass.logged_in, false);
// prefs.remove(keyClass.cabang_id);
// prefs.remove(keyClass.company);
// prefs.remove(keyClass.loginId);
// });
// },
// child: Text('Cancel',style: TextStyle(color: Colors.indigo)),
// )
// ],
// ),
// ),
// )
// ],
// ),
// ),
// ),
// ),
// ),
// );
// }
}
}

+ 12
- 12
pubspec.lock View File

@@ -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,7 +42,7 @@ packages:
name: characters
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
version: "1.2.1"
charcode:
dependency: transitive
description:
@@ -56,7 +56,7 @@ packages:
name: clock
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
version: "1.1.1"
collection:
dependency: transitive
description:
@@ -133,7 +133,7 @@ packages:
name: fake_async
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
version: "1.3.1"
ffi:
dependency: transitive
description:
@@ -281,21 +281,21 @@ 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"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
source: hosted
version: "1.7.0"
version: "1.8.0"
oauth2:
dependency: "direct main"
description:
@@ -316,7 +316,7 @@ packages:
name: path
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.1"
version: "1.8.2"
path_provider:
dependency: "direct main"
description:
@@ -510,7 +510,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:
@@ -545,7 +545,7 @@ packages:
name: string_scanner
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
version: "1.1.1"
synchronized:
dependency: transitive
description:
@@ -559,14 +559,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:


Loading…
Cancel
Save