Flutter app for Asset Management
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

170 líneas
5.2 KiB

  1. import 'dart:async';
  2. import 'dart:convert';
  3. import 'dart:io';
  4. import 'dart:typed_data';
  5. import 'package:assetstock/util/prefsKey.dart';
  6. import 'package:flutter/cupertino.dart';
  7. import 'package:path_provider/path_provider.dart';
  8. import 'package:http/http.dart';
  9. import 'package:path/path.dart';
  10. import 'package:async/async.dart';
  11. import 'dart:io';
  12. import 'utils.dart';
  13. class file_Trans_Handler {
  14. // double _progress = 0;
  15. Util util = new Util();
  16. String _path = '';
  17. StreamSubscription dlulStream;
  18. String _error = '';
  19. String _success = '';
  20. bool _finish = false;
  21. get isFinish => _finish;
  22. get path => _path;
  23. get error => _error;
  24. get success => _success;
  25. StreamController _progress = new StreamController<double>();
  26. Stream<double> get progress =>_progress.stream;
  27. var client = new Client();
  28. var headers = {'device':'mobile'};
  29. downloadFile(String fileName,String link) async {
  30. StreamedResponse _response;
  31. List<int> _bytes = [];
  32. int _total = 0;
  33. print('Start Download');
  34. _progress.add(null);
  35. try {
  36. Request req = new Request('GET', Uri.parse(link));
  37. req.headers.addAll(headers);
  38. _response = await client.send(req).timeout(
  39. Duration(seconds: 20));
  40. // _response = await client.get('$link',headers: 'application/json')
  41. _total = _response.contentLength;
  42. print('${_total / 1024} KB');
  43. dlulStream = _response.stream.listen((value) {
  44. _bytes.addAll(value);
  45. _progress.add(((_bytes.length / _total)));
  46. })
  47. ..onDone(() async {
  48. _progress.add(0.0);
  49. print('Finish Download');
  50. final file = File(
  51. "${(await getApplicationDocumentsDirectory()).path}/$fileName");
  52. await file.writeAsBytes(_bytes);
  53. _path = file.path;
  54. })
  55. ..onError((e) async {
  56. print('Error Download, $e');
  57. _progress.add(-1.0);
  58. _error = e.toString();
  59. });
  60. }
  61. catch(e){
  62. print('Error Download, $e');
  63. _progress.add(-1.0);
  64. _error = e.toString();
  65. }
  66. }
  67. uploadFile(String fileName,String link,String user,context) async{
  68. StreamedResponse _response;
  69. int _total;
  70. List<int> _bytes = [];
  71. _finish = false;
  72. final file = File(
  73. "${(await getApplicationDocumentsDirectory()).path}/$fileName");
  74. _total = file.lengthSync();
  75. print(_total/1024);
  76. try{
  77. var request = MultipartRequest('POST', Uri.parse(link));
  78. request.headers.addAll(headers);
  79. request.files.add(await MultipartFile.fromPath('sqliteDb', file.path));
  80. request.fields[keyClass.user] = user;
  81. // _response = await client.send(request).timeout(Duration(seconds: 8));
  82. print(["sadasdasda",await util.checkinternet()]);
  83. if(await util.checkinternet()){
  84. util.showLoading(context,dissmissable: false,onwillpop: ()async{return false;});
  85. _response = await client.send(request);
  86. print("MASIH JALAN");
  87. if(_response.statusCode==200){
  88. _error = '';_success = '';
  89. dlulStream = _response.stream.listen((value) {
  90. _bytes.addAll(value);
  91. _progress.add((_bytes.length / _total));
  92. try{
  93. var result = jsonDecode(utf8.decode(value));
  94. if(result['STATUS']==0) {
  95. _error = result['DATA'];
  96. _finish = true;
  97. }
  98. else if(result['STATUS']==1){
  99. _error = '';
  100. _success = result['DATA'];
  101. _finish = true;
  102. }
  103. }catch(e){
  104. }
  105. })
  106. ..onDone(()async {
  107. Navigator.pop(context);
  108. client?.close();
  109. _finish = true;
  110. print("sdasdasdsd $_error");
  111. if(_error!=''){
  112. _progress.add(-1.0);
  113. print('Error Upload, $_error');
  114. }
  115. else{
  116. _progress.add(1.0);
  117. print('Finish Upload');
  118. print('done');
  119. }
  120. })
  121. ..onError((e){
  122. Navigator.pop(context);
  123. client?.close();
  124. print('Error Upload, $e');
  125. _progress.add(-1.0);
  126. _error = e.toString();
  127. });
  128. }
  129. else{
  130. Navigator.pop(context);
  131. client?.close();
  132. var resBody = await _response.stream.bytesToString();
  133. _progress.add(-1.0);
  134. _finish = true;
  135. _error = resBody;
  136. }
  137. }
  138. else{
  139. client?.close();
  140. _progress.add(-1.0);
  141. _finish = true;
  142. _error = "Check Internet Connection";
  143. }
  144. }
  145. // on TimeoutException{
  146. // client?.close();
  147. // print(['error timed out']);
  148. // Navigator.pop(context);
  149. // _progress.add(-1.0);
  150. // _finish = true;
  151. // _error = "Request timed out. Please check connection";
  152. // }
  153. catch(e){
  154. client?.close();
  155. print(['error',e]);
  156. _finish = true;
  157. _progress.add(-1.0);
  158. _error = e.toString();
  159. }
  160. }
  161. cancel()async{
  162. client?.close();
  163. await dlulStream?.cancel();
  164. _progress?.close();
  165. }
  166. }