import 'dart:io' as io; //import 'package:advance_pdf_viewer/advance_pdf_viewer.dart'; import 'package:decpisos/funcoes_gerais.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:path_provider/path_provider.dart'; import 'package:share/share.dart'; class PDFViewerScreenController extends GetxController{ var loading = true.obs; var loadPDF = false.obs; var visibleRefresh = false.obs; var error = false.obs; //PDFDocument doc = PDFDocument(); io.File? filePDF; @override void onInit() { super.onInit(); this._loadPDF(); } Future _loadPDF() async { var file = await this._createFileOfPdfUrl(); // if(file != null && await file.exists()){ // //io.File fpdf = new io.File('${file.path}'); // this.doc = await PDFDocument.fromFile(file); // //this.doc = await PDFDocument.fromFile(file); // //this.visibleRefresh.value = true; // } // else{ // if(await FuncoesGerais.checkInternetConnection() == false){ // this.error.value = true; // } // else{ // this.doc = await PDFDocument.fromURL(FuncoesGerais.urlPDF); // } // } if(file == null || await file.exists() == false){ this.error.value = true; } this.loading.value = false; } Future refreshPDF() async { this.loading.value = true; try { await this.filePDF!.delete(); this._loadPDF(); } catch (e) { Get.rawSnackbar(message: 'Não possível atualizar o PDF. Tente novamente'); this.loading.value = false; } } Future sharePDF() async { //Share.shareFiles(['${directory.path}/image.jpg'], text: 'Great picture'); this.loadPDF.value = true; var file = await this._createFileOfPdfUrl(); try { Share.shareFiles([file!.path], text: 'DecCard').then((value) => this.loadPDF.value = false); } catch (e) { this.loadPDF.value = false; Get.rawSnackbar(message: 'Não foi possível compartilhar o PDF'); } } Future _createFileOfPdfUrl() async { final url = FuncoesGerais.urlPDF; io.File? file; //f.File file2; final filename = url.substring(url.lastIndexOf("/") + 1); String dir = (await getApplicationDocumentsDirectory()).path; file = io.File('$dir/$filename'); if(!await file.exists()){ if(await FuncoesGerais.checkInternetConnection()){ var request = await io.HttpClient().getUrl(Uri.parse(url)); var response = await request.close(); var bytes = await consolidateHttpClientResponseBytes(response); await file.writeAsBytes(bytes); } else{ file = null; } } this.filePDF = file; if(this.filePDF != null) this.visibleRefresh.value = await this.filePDF!.exists(); return file; } Widget buildError(){ return Container( width: double.maxFinite, child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Text('Não foi possível carregar o PDF'), SizedBox(height: 10.0,), ElevatedButton(onPressed: this.refreshPDF,child: Text('Atualizar')) //RaisedButton(onPressed: this.refreshPDF,child: Text('Atualizar'),) ], ), ); } }