| @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; | |||
| import 'package:image_picker/image_picker.dart'; | |||
| import 'main.dart'; | |||
| import 'util/Models.dart'; | |||
| import 'package:http/http.dart' as http; | |||
| import 'util/prefsKey.dart'; | |||
| class AssetDetails extends StatefulWidget { | |||
| // AssetDetails({Key key}) : super(key: key); | |||
| @@ -217,12 +219,24 @@ class _AssetDetailsState extends State<AssetDetails> with TickerProviderStateMix | |||
| alignment: Alignment.centerRight, | |||
| child: InkWell( | |||
| onTap: ()async { | |||
| var result = await DBHelper.database.getRefBlob(_asset.tag_number); | |||
| if(result!=null){ | |||
| if(result.blob!=null) Navigator.push(context, MaterialPageRoute(builder: (context) => PhotoViewer(result.blob,))); | |||
| try{ | |||
| var dbName = await DBHelper.database.getDbName(); | |||
| var bUnit = await DBHelper.database.getBUnit(); | |||
| util.showLoading(context); | |||
| http.Response result = await http.get( | |||
| '${prefs.getString(keyClass.hostAddress)??"https://asset.thamringroup.web.id"}/api/images?q=${_asset.tag_number}&s=${dbName}&b=${bUnit}', | |||
| ).timeout(Duration(seconds: 3)); | |||
| Navigator.pop(context); | |||
| if(result!=null){ | |||
| Navigator.push(context, MaterialPageRoute(builder: (context) => PhotoViewer(result.bodyBytes))); | |||
| } | |||
| else util.showToast('ALERT', "No Archived Images yet"); | |||
| } | |||
| else util.showToast('ALERT', "No Archived Images yet"); | |||
| catch(e){ | |||
| Navigator.pop(context); | |||
| print(e); | |||
| util.showToast('ALERT', "No Archived Images yet"); | |||
| } | |||
| //showPhoto | |||
| }, | |||
| child: Padding( | |||
| @@ -250,6 +250,13 @@ class _AssetLogsState extends State<AssetLogs> { | |||
| ], | |||
| ), | |||
| ), | |||
| floatingActionButton: FloatingActionButton.extended( | |||
| onPressed: (){ | |||
| }, | |||
| icon: Icon(Icons.sync), | |||
| label: Text("Sync Approval"), | |||
| ), | |||
| ); | |||
| } | |||
| } | |||
| @@ -323,6 +323,7 @@ class _HomeState extends State<Home> { | |||
| // var allUnits = await DBHelper.database.getAllAsset(); | |||
| // print('${allUnits.length} Units'); | |||
| util.showToast('ALERT','Data Downloaded'); | |||
| await DBHelper.database.setOpenState(); | |||
| } | |||
| if(value==-1.0){ | |||
| util.showToast('ALERT','Data Error ${trans.error}'); | |||
| @@ -5,6 +5,7 @@ import 'prefsKey.dart'; | |||
| import 'dart:io'; | |||
| import 'dart:async'; | |||
| import 'package:path/path.dart'; | |||
| import 'package:intl/intl.dart'; | |||
| class DBHelper{ | |||
| DBHelper._(); | |||
| @@ -78,19 +79,19 @@ class DBHelper{ | |||
| return null; | |||
| } | |||
| } | |||
| getRefBlob(tagNumber)async{ | |||
| try{ | |||
| final database = await db; | |||
| var res = await database.query(tableName.ref,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]); | |||
| // var a = await database.rawQuery("select length(${columnName.blob}) / 1024 from ${tableName.insert} where ${columnName.no} = $no"); | |||
| // print(a); | |||
| return res.isNotEmpty ? Asset.fromJson(res.first): null; | |||
| } | |||
| catch(e){ | |||
| print(e); | |||
| return null; | |||
| } | |||
| } | |||
| // getRefBlob(tagNumber)async{ | |||
| // try{ | |||
| // final database = await db; | |||
| // var res = await database.query(tableName.insert,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]); | |||
| // // var a = await database.rawQuery("select count(*) from ${tableName.insert}"); | |||
| // // print(a); | |||
| // return res.isNotEmpty ? Asset.fromJson(res.first): null; | |||
| // } | |||
| // catch(e){ | |||
| // print(e); | |||
| // return null; | |||
| // } | |||
| // } | |||
| searchbyTagNumber(tagNumber) async{ | |||
| try{ | |||
| final database = await db; | |||
| @@ -256,5 +257,22 @@ class DBHelper{ | |||
| return null; | |||
| } | |||
| } | |||
| setOpenState()async{ | |||
| try{ | |||
| final database = await db; | |||
| var check_KEY = await database.rawQuery("SELECT 1 FROM ${tableName.key} where ${columnName.key} = 'STATE'"); | |||
| if (check_KEY.length<=0){ | |||
| await database.insert(tableName.key, {columnName.key:"STATE",columnName.value:"OPEN"}); | |||
| } | |||
| else{ | |||
| await database.update(tableName.key, {columnName.value:"OPEN"},where: "${columnName.key} = ?",whereArgs: ['STATE']); | |||
| } | |||
| await database.update(tableName.key, {columnName.value:DateFormat("YYYY-MM-DD HH:mm:ss").format(DateTime.now())},where: "${columnName.key} = ?",whereArgs: ['START_DATE']); | |||
| } | |||
| catch(e){ | |||
| print(e); | |||
| return null; | |||
| } | |||
| } | |||
| } | |||
| @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; | |||
| import 'package:http/http.dart' as http; | |||
| import 'package:barcode_scan/barcode_scan.dart'; | |||
| import 'package:fluttertoast/fluttertoast.dart'; | |||
| import '../main.dart'; | |||
| class Util{ | |||
| scan()async{ | |||
| String BarcodeText =''; | |||
| @@ -18,6 +18,27 @@ class Util{ | |||
| return {'STATUS':0,'DATA':e}; | |||
| } | |||
| } | |||
| showLoadingFuture(context,future,{dismiss=false,onWillPop})async { | |||
| var dialogContext; | |||
| showDialog( | |||
| context: context, | |||
| builder: (BuildContext context) { | |||
| dialogContext = context; | |||
| return WillPopScope( | |||
| onWillPop: onWillPop??()async{return true;}, | |||
| child: new Center( | |||
| child: new CircularProgressIndicator(), | |||
| ), | |||
| ); | |||
| }, | |||
| barrierDismissible: dismiss, | |||
| ); | |||
| var res = await future; | |||
| Navigator.pop(dialogContext); | |||
| return res; | |||
| } | |||
| JsonDataPostRaw(Map jsonData, String url,{timeout:false,duration:10}) async{ | |||
| const JsonDecoder decoder = const JsonDecoder(); | |||
| try { | |||
| @@ -43,6 +64,7 @@ class Util{ | |||
| return {"STATUS":"ERROR","ERROR":"Not Connected to Server. $exception"}; | |||
| } | |||
| } | |||
| showToast(type,text)async{ | |||
| await Fluttertoast.cancel(); | |||
| Fluttertoast.showToast( | |||
| @@ -178,7 +178,7 @@ packages: | |||
| source: hosted | |||
| version: "1.1.0" | |||
| intl: | |||
| dependency: transitive | |||
| dependency: "direct main" | |||
| description: | |||
| name: intl | |||
| url: "https://pub.dartlang.org" | |||
| @@ -29,6 +29,7 @@ dependencies: | |||
| photo_view: | |||
| sqflite: | |||
| matrix_gesture_detector: | |||
| intl: | |||
| # The following adds the Cupertino Icons font to your application. | |||
| # Use with the CupertinoIcons class for iOS style icons. | |||
| cupertino_icons: ^0.1.3 | |||