CS001305-3_APP-CARDS_STARTER

This commit is contained in:
2021-05-26 15:47:55 -03:00
parent ca0ec06c31
commit 1b564c824e
10 changed files with 267 additions and 8 deletions
+1
View File
@@ -18,6 +18,7 @@ class FuncoesGerais{
static const String channelId = "UCJ_EUoswNTvRGotJ-ROxaKw";
static const String homeURL = "https://www.decpisos.com.br/";
static const String dominioPermitido = "https://www.decpisos.com.br";
static const String urlPDF = "http://app-cards.com/files/card-decpisos.pdf";
static Future<bool> checkInternetConnection() async{
+9 -6
View File
@@ -1,11 +1,12 @@
import 'package:decpisos/home/home.dart';
import 'package:decpisos/instagram_embed/instagram_embed.dart';
//import 'package:decpisos/instagram_embed/instagram_embed.dart';
import 'package:decpisos/notificacoes/notificacoes.dart';
//import 'package:decpisos/videos/youtube_videos.dart';
import 'package:convex_bottom_bar/convex_bottom_bar.dart';
import 'package:decpisos/pdfviewer/pdfviewer.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:line_icons/line_icons.dart';
//import 'package:line_icons/line_icons.dart';
class IndexController extends GetxController with SingleGetTickerProviderMixin{
TabController tabController;
@@ -26,11 +27,13 @@ class IndexController extends GetxController with SingleGetTickerProviderMixin{
void initTabs(){
//this.childrenTabs.add(YouTubeVideosScreen());
this.childrenTabs.add(InstagramScreen());
this.childrenTabs.add(HomeScreen());
this.childrenTabs.add(NotificacoesScreen());
//this.childrenTabs.add(InstagramScreen());
this.childrenTabs.add(Tab(key: PageStorageKey('pdftab'), child:PDFViewerScreen()));
this.childrenTabs.add(Tab(child: HomeScreen()));
this.childrenTabs.add(Tab(child: NotificacoesScreen()));
//this.tabs.add(TabItem(icon: Icons.video_collection, title: 'Vídeos'));
this.tabs.add(TabItem(icon: LineIcons.instagram, title: 'Instagram'));
//this.tabs.add(TabItem(icon: LineIcons.instagram, title: 'Instagram'));
this.tabs.add(TabItem(icon: Icons.book_online, title: 'DecCard'));
this.tabs.add(TabItem(icon: Icons.home, title: 'Home'));
this.tabs.add(TabItem(icon: Icons.notifications, title: 'Notificações'));
this.tabController = TabController(vsync: this, length: this.tabs.length);
+2
View File
@@ -15,6 +15,8 @@ class NotificacoesScreen extends StatelessWidget {
return Scaffold(
appBar: AppBar(
title: const Text('Notificações'),
leading: Container(),
leadingWidth: 0,
centerTitle: false,
),
body: Obx(() => c.loading.value ? Center(child: CircularProgressIndicator(),) : c.errorCode.value != 0 ? this._buildError() : RefreshIndicator(
+31
View File
@@ -0,0 +1,31 @@
import 'package:advance_pdf_viewer/advance_pdf_viewer.dart';
import 'package:decpisos/pdfviewer/pdfviewer_controller.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class PDFViewerScreen extends StatelessWidget {
final PDFViewerScreenController c = Get.put(PDFViewerScreenController());
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('DecCard'),
centerTitle: false,
leading: Container(),
leadingWidth: 0,
actions: [
Obx(() => c.loadPDF.value ? Center(child: CircularProgressIndicator()) : IconButton(icon: Icon(Icons.share), onPressed: c.sharePDF)),
Obx(() => c.visibleRefresh.value ? IconButton(icon: Icon(Icons.refresh), onPressed: c.refreshPDF) : Container())
],
),
body: Obx(() => c.loading.value
? Center(
child: CircularProgressIndicator(),
)
: c.error.value ? c.buildError() : PDFViewer(
lazyLoad: false,
document: c.doc,
)),
);
}
}
+106
View File
@@ -0,0 +1,106 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:advance_pdf_viewer/advance_pdf_viewer.dart';
import 'package:decpisos/funcoes_gerais.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;
File _filePDF;
@override
void onInit() {
super.onInit();
this._loadPDF();
}
Future<void> _loadPDF() async {
var file = await this._createFileOfPdfUrl();
if(file != null && await file.exists()){
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);
}
}
this.loading.value = false;
}
Future<void> 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<void> 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<File> _createFileOfPdfUrl() async {
final url = FuncoesGerais.urlPDF;
File file;
final filename = url.substring(url.lastIndexOf("/") + 1);
String dir = (await getApplicationDocumentsDirectory()).path;
file = new File('$dir/$filename');
if(!await file.exists()){
if(await FuncoesGerais.checkInternetConnection()){
var request = await 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,),
RaisedButton(onPressed: this.refreshPDF,child: Text('Atualizar'),)
],
),
);
}
}