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
+3
View File
@@ -78,6 +78,9 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
debug {
signingConfig signingConfigs.debug
}
} }
splits { splits {
+30
View File
@@ -1,4 +1,6 @@
PODS: PODS:
- advance_pdf_viewer (1.0.5):
- Flutter
- device_info (0.0.1): - device_info (0.0.1):
- Flutter - Flutter
- Firebase/Core (6.33.0): - Firebase/Core (6.33.0):
@@ -52,6 +54,9 @@ PODS:
- Flutter (1.0.0) - Flutter (1.0.0)
- flutter_inappwebview (0.0.1): - flutter_inappwebview (0.0.1):
- Flutter - Flutter
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- GoogleAppMeasurement (6.8.3): - GoogleAppMeasurement (6.8.3):
- GoogleUtilities/AppDelegateSwizzler (~> 6.7) - GoogleUtilities/AppDelegateSwizzler (~> 6.7)
- GoogleUtilities/MethodSwizzler (~> 6.7) - GoogleUtilities/MethodSwizzler (~> 6.7)
@@ -84,10 +89,17 @@ PODS:
- nanopb/encode (= 1.30906.0) - nanopb/encode (= 1.30906.0)
- nanopb/decode (1.30906.0) - nanopb/decode (1.30906.0)
- nanopb/encode (1.30906.0) - nanopb/encode (1.30906.0)
- path_provider (0.0.1):
- Flutter
- PromisesObjC (1.2.11) - PromisesObjC (1.2.11)
- Protobuf (3.14.0) - Protobuf (3.14.0)
- share (0.0.1):
- Flutter
- shared_preferences (0.0.1): - shared_preferences (0.0.1):
- Flutter - Flutter
- sqflite (0.0.2):
- Flutter
- FMDB (>= 2.7.5)
- url_launcher (0.0.1): - url_launcher (0.0.1):
- Flutter - Flutter
- video_player (0.0.1): - video_player (0.0.1):
@@ -98,11 +110,15 @@ PODS:
- Flutter - Flutter
DEPENDENCIES: DEPENDENCIES:
- advance_pdf_viewer (from `.symlinks/plugins/advance_pdf_viewer/ios`)
- device_info (from `.symlinks/plugins/device_info/ios`) - device_info (from `.symlinks/plugins/device_info/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
- Flutter (from `Flutter`) - Flutter (from `Flutter`)
- flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`) - flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`)
- path_provider (from `.symlinks/plugins/path_provider/ios`)
- share (from `.symlinks/plugins/share/ios`)
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- url_launcher (from `.symlinks/plugins/url_launcher/ios`) - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
- video_player (from `.symlinks/plugins/video_player/ios`) - video_player (from `.symlinks/plugins/video_player/ios`)
- wakelock (from `.symlinks/plugins/wakelock/ios`) - wakelock (from `.symlinks/plugins/wakelock/ios`)
@@ -117,6 +133,7 @@ SPEC REPOS:
- FirebaseInstallations - FirebaseInstallations
- FirebaseInstanceID - FirebaseInstanceID
- FirebaseMessaging - FirebaseMessaging
- FMDB
- GoogleAppMeasurement - GoogleAppMeasurement
- GoogleDataTransport - GoogleDataTransport
- GoogleUtilities - GoogleUtilities
@@ -125,6 +142,8 @@ SPEC REPOS:
- Protobuf - Protobuf
EXTERNAL SOURCES: EXTERNAL SOURCES:
advance_pdf_viewer:
:path: ".symlinks/plugins/advance_pdf_viewer/ios"
device_info: device_info:
:path: ".symlinks/plugins/device_info/ios" :path: ".symlinks/plugins/device_info/ios"
firebase_messaging: firebase_messaging:
@@ -133,8 +152,14 @@ EXTERNAL SOURCES:
:path: Flutter :path: Flutter
flutter_inappwebview: flutter_inappwebview:
:path: ".symlinks/plugins/flutter_inappwebview/ios" :path: ".symlinks/plugins/flutter_inappwebview/ios"
path_provider:
:path: ".symlinks/plugins/path_provider/ios"
share:
:path: ".symlinks/plugins/share/ios"
shared_preferences: shared_preferences:
:path: ".symlinks/plugins/shared_preferences/ios" :path: ".symlinks/plugins/shared_preferences/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
url_launcher: url_launcher:
:path: ".symlinks/plugins/url_launcher/ios" :path: ".symlinks/plugins/url_launcher/ios"
video_player: video_player:
@@ -145,6 +170,7 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/webview_flutter/ios" :path: ".symlinks/plugins/webview_flutter/ios"
SPEC CHECKSUMS: SPEC CHECKSUMS:
advance_pdf_viewer: 5c832f382b4ca84fe735f893b7e91aa830c27d7b
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
Firebase: 8db6f2d1b2c5e2984efba4949a145875a8f65fe5 Firebase: 8db6f2d1b2c5e2984efba4949a145875a8f65fe5
firebase_messaging: 21344b3b3a7d9d325d63a70e3750c0c798fe1e03 firebase_messaging: 21344b3b3a7d9d325d63a70e3750c0c798fe1e03
@@ -156,13 +182,17 @@ SPEC CHECKSUMS:
FirebaseMessaging: 5eca4ef173de76253352511aafef774caa1cba2a FirebaseMessaging: 5eca4ef173de76253352511aafef774caa1cba2a
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
flutter_inappwebview: 69dfbac46157b336ffbec19ca6dfd4638c7bf189 flutter_inappwebview: 69dfbac46157b336ffbec19ca6dfd4638c7bf189
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
GoogleAppMeasurement: 966e88df9d19c15715137bb2ddaf52373f111436 GoogleAppMeasurement: 966e88df9d19c15715137bb2ddaf52373f111436
GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833 GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833
GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3 GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3
nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f
Protobuf: 0cde852566359049847168e51bd1c690e0f70056 Protobuf: 0cde852566359049847168e51bd1c690e0f70056
share: 0b2c3e82132f5888bccca3351c504d0003b3b410
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e
wakelock: bfc7955c418d0db797614075aabbc58a39ab5107 wakelock: bfc7955c418d0db797614075aabbc58a39ab5107
+3
View File
@@ -366,6 +366,7 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = WJ7RU32S89; DEVELOPMENT_TEAM = WJ7RU32S89;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FLUTTER_BUILD_NUMBER = 2;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
@@ -506,6 +507,7 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = WJ7RU32S89; DEVELOPMENT_TEAM = WJ7RU32S89;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FLUTTER_BUILD_NUMBER = 2;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
@@ -541,6 +543,7 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = WJ7RU32S89; DEVELOPMENT_TEAM = WJ7RU32S89;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FLUTTER_BUILD_NUMBER = 2;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
+1
View File
@@ -18,6 +18,7 @@ class FuncoesGerais{
static const String channelId = "UCJ_EUoswNTvRGotJ-ROxaKw"; static const String channelId = "UCJ_EUoswNTvRGotJ-ROxaKw";
static const String homeURL = "https://www.decpisos.com.br/"; static const String homeURL = "https://www.decpisos.com.br/";
static const String dominioPermitido = "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{ static Future<bool> checkInternetConnection() async{
+9 -6
View File
@@ -1,11 +1,12 @@
import 'package:decpisos/home/home.dart'; 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/notificacoes/notificacoes.dart';
//import 'package:decpisos/videos/youtube_videos.dart'; //import 'package:decpisos/videos/youtube_videos.dart';
import 'package:convex_bottom_bar/convex_bottom_bar.dart'; import 'package:convex_bottom_bar/convex_bottom_bar.dart';
import 'package:decpisos/pdfviewer/pdfviewer.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.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{ class IndexController extends GetxController with SingleGetTickerProviderMixin{
TabController tabController; TabController tabController;
@@ -26,11 +27,13 @@ class IndexController extends GetxController with SingleGetTickerProviderMixin{
void initTabs(){ void initTabs(){
//this.childrenTabs.add(YouTubeVideosScreen()); //this.childrenTabs.add(YouTubeVideosScreen());
this.childrenTabs.add(InstagramScreen()); //this.childrenTabs.add(InstagramScreen());
this.childrenTabs.add(HomeScreen()); this.childrenTabs.add(Tab(key: PageStorageKey('pdftab'), child:PDFViewerScreen()));
this.childrenTabs.add(NotificacoesScreen()); 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: 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.home, title: 'Home'));
this.tabs.add(TabItem(icon: Icons.notifications, title: 'Notificações')); this.tabs.add(TabItem(icon: Icons.notifications, title: 'Notificações'));
this.tabController = TabController(vsync: this, length: this.tabs.length); this.tabController = TabController(vsync: this, length: this.tabs.length);
+2
View File
@@ -15,6 +15,8 @@ class NotificacoesScreen extends StatelessWidget {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: const Text('Notificações'), title: const Text('Notificações'),
leading: Container(),
leadingWidth: 0,
centerTitle: false, centerTitle: false,
), ),
body: Obx(() => c.loading.value ? Center(child: CircularProgressIndicator(),) : c.errorCode.value != 0 ? this._buildError() : RefreshIndicator( 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'),)
],
),
);
}
}
+79 -2
View File
@@ -1,6 +1,13 @@
# Generated by pub # Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile # See https://dart.dev/tools/pub/glossary#lockfile
packages: packages:
advance_pdf_viewer:
dependency: "direct main"
description:
name: advance_pdf_viewer
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.2"
animated_splash_screen: animated_splash_screen:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -181,6 +188,13 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_cache_manager:
dependency: transitive
description:
name: flutter_cache_manager
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
flutter_html: flutter_html:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -287,6 +301,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.2" version: "1.0.2"
infinite_listview:
dependency: transitive
description:
name: infinite_listview
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1+1"
intl: intl:
dependency: transitive dependency: transitive
description: description:
@@ -329,6 +350,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.9.7" version: "0.9.7"
numberpicker:
dependency: transitive
description:
name: numberpicker
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
page_transition: page_transition:
dependency: transitive dependency: transitive
description: description:
@@ -357,6 +385,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.4" version: "0.1.4"
path_provider:
dependency: "direct main"
description:
name: path_provider
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.28"
path_provider_linux: path_provider_linux:
dependency: transitive dependency: transitive
description: description:
@@ -364,6 +399,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.0.1+2" version: "0.0.1+2"
path_provider_macos:
dependency: transitive
description:
name: path_provider_macos
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.4+8"
path_provider_platform_interface: path_provider_platform_interface:
dependency: transitive dependency: transitive
description: description:
@@ -420,6 +462,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.5" version: "2.1.5"
rxdart:
dependency: transitive
description:
name: rxdart
url: "https://pub.dartlang.org"
source: hosted
version: "0.25.0"
sa_v1_migration: sa_v1_migration:
dependency: transitive dependency: transitive
description: description:
@@ -427,6 +476,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.2" version: "1.1.2"
share:
dependency: "direct main"
description:
name: share
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.5+4"
shared_preferences: shared_preferences:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -488,6 +544,20 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0-nullsafety.2" version: "1.8.0-nullsafety.2"
sqflite:
dependency: transitive
description:
name: sqflite
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.2+4"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3+3"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
@@ -523,6 +593,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.4.0" version: "1.4.0"
synchronized:
dependency: transitive
description:
name: synchronized
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0+2"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
@@ -692,5 +769,5 @@ packages:
source: hosted source: hosted
version: "7.0.0+7" version: "7.0.0+7"
sdks: sdks:
dart: ">=2.10.0-110 <2.11.0" dart: ">=2.10.2 <2.11.0"
flutter: ">=1.22.0 <2.0.0" flutter: ">=1.22.2 <2.0.0"
+3
View File
@@ -48,6 +48,9 @@ dependencies:
animations: ^1.1.2 animations: ^1.1.2
shared_preferences: ^0.5.12+4 shared_preferences: ^0.5.12+4
youtube_player_flutter: ^7.0.0+7 youtube_player_flutter: ^7.0.0+7
share: ^0.6.5+4
advance_pdf_viewer: ^1.2.2
path_provider: ^1.6.28
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: