diff --git a/android/app/build.gradle b/android/app/build.gradle
index 8d5c074..295ce8f 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -45,7 +45,7 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.hightechx.mobile.decpisos"
- minSdkVersion 17
+ minSdkVersion 19
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
@@ -82,27 +82,27 @@ android {
signingConfig signingConfigs.debug
}
}
- // splits {
+ splits {
- // //Configures multiple APKs based on ABI.
- // abi {
+ //Configures multiple APKs based on ABI.
+ abi {
- // //Enables building multiple APKs per ABI.
- // enable true
+ //Enables building multiple APKs per ABI.
+ enable true
- // //By default all ABIs are included, so use reset() and include to specify that we only
- // //want APKs for x86 and x86_64.
+ //By default all ABIs are included, so use reset() and include to specify that we only
+ //want APKs for x86 and x86_64.
- // //Resets the list of ABIs that Gradle should create APKs for to none.
- // reset()
+ //Resets the list of ABIs that Gradle should create APKs for to none.
+ reset()
- // //Specifies a list of ABIs that Gradle should create APKs for.
- // include "x86", "x86_64", "armeabi", "armeabi-v7a", "arm64-v8a"
+ //Specifies a list of ABIs that Gradle should create APKs for.
+ include "x86", "x86_64", "armeabi", "armeabi-v7a", "arm64-v8a"
- // //Specifies that we do not want to also generate a universal APK that includes all ABIs.
- // universalApk false
- // }
- // }
+ //Specifies that we do not want to also generate a universal APK that includes all ABIs.
+ universalApk false
+ }
+ }
}
flutter {
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index bef1050..b3b2e08 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -75,5 +75,7 @@
UIViewControllerBasedStatusBarAppearance
+ io.flutter.embedded_views_preview
+
diff --git a/lib/atualizarapp/atualizarapp.dart b/lib/atualizarapp/atualizarapp.dart
index 5fd813b..da4a1db 100644
--- a/lib/atualizarapp/atualizarapp.dart
+++ b/lib/atualizarapp/atualizarapp.dart
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
class AtualizarScreen extends StatefulWidget {
- final String linkLoja;
+ final String? linkLoja;
AtualizarScreen({this.linkLoja});
@override
_AtualizarScreenState createState() => _AtualizarScreenState();
@@ -55,7 +55,7 @@ class _AtualizarScreenState extends State {
borderRadius: BorderRadius.circular(10.0)
),
onPressed: (){
- launch(widget.linkLoja);
+ launch(widget.linkLoja!);
}
),
],
diff --git a/lib/default_response_api.dart b/lib/default_response_api.dart
index a04d36b..f06654b 100644
--- a/lib/default_response_api.dart
+++ b/lib/default_response_api.dart
@@ -1,6 +1,6 @@
class DefaultResponseApi {
- int errorCode;
- String errorMessage;
+ int? errorCode;
+ String? errorMessage;
DefaultResponseApi({this.errorCode, this.errorMessage});
@@ -18,11 +18,11 @@ class DefaultResponseApi {
}
class RegistraDeviceRequest {
- int aPPMOBILECODIGO;
- int pLATAFORMAMOBILECODIGO;
- String dEVICETOKEN;
- String mODELODEVICE;
- int uSUCOD;
+ int? aPPMOBILECODIGO;
+ int? pLATAFORMAMOBILECODIGO;
+ String? dEVICETOKEN;
+ String? mODELODEVICE;
+ int? uSUCOD;
RegistraDeviceRequest(
{this.aPPMOBILECODIGO,
@@ -51,12 +51,12 @@ class RegistraDeviceRequest {
}
class ApiStatusResponse {
- String sistema;
- String upload;
- String download;
- String pagamento;
- int errorCode;
- String errorMessage;
+ String? sistema;
+ String? upload;
+ String? download;
+ String? pagamento;
+ int? errorCode;
+ String? errorMessage;
ApiStatusResponse(
{this.sistema,
@@ -77,12 +77,12 @@ class ApiStatusResponse {
}
class VersaoMinimaResponse {
- int versaoMinima;
- String linkLoja;
- String nome;
- int errorCode;
- String errorMessage;
- bool vOk;
+ int? versaoMinima;
+ String? linkLoja;
+ String? nome;
+ int? errorCode;
+ String? errorMessage;
+ bool? vOk;
VersaoMinimaResponse({this.errorCode, this.errorMessage,this.linkLoja,this.nome,this.versaoMinima,this.vOk});
diff --git a/lib/funcoes_gerais.dart b/lib/funcoes_gerais.dart
index 9e6cb29..0befa0f 100644
--- a/lib/funcoes_gerais.dart
+++ b/lib/funcoes_gerais.dart
@@ -1,4 +1,5 @@
import 'dart:convert';
+import 'package:get/get.dart';
import 'package:http/http.dart' as http;
import 'package:device_info/device_info.dart';
import 'dart:io';
@@ -45,7 +46,7 @@ class FuncoesGerais{
return Future.value(tokenPadrao);
}
- static Future registraDevice(String token) async{
+ static Future registraDevice(String? token) async{
if(await FuncoesGerais.checkInternetConnection()){
if(token != null && token.isNotEmpty){
@@ -78,7 +79,7 @@ class FuncoesGerais{
try {
var body = json.encode(objPost);
//var response = await http.post(url, body: body,headers: heads);
- await http.post(url, body: body,headers: heads);
+ await http.post(Uri.parse(url), body: body,headers: heads);
//var r = await http.post(url, body: body,headers: heads);
//print(r);
// if (response != null) {
@@ -112,8 +113,8 @@ class FuncoesGerais{
heads["Content-type"] = "application/json; charset=utf-8";
try {
- var response = await http.get(url,headers: heads);
- if (response != null) {
+ http.Response response = await http.get(Uri.parse(url),headers: heads);
+ if (!GetUtils.isNullOrBlank(response.body)!) {
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
objRetorno = VersaoMinimaResponse.fromJson(data);
@@ -121,7 +122,7 @@ class FuncoesGerais{
// var v = packageInfo.version.split('.');
// int versaoAtual = 0;
//if(v.length > 0)versaoAtual = v[0] != null && v[0].isNotEmpty ? int.parse(v[0]) : 0;
- if(FuncoesGerais.versaoAtual != null && objRetorno.versaoMinima > FuncoesGerais.versaoAtual){
+ if(objRetorno.versaoMinima! > FuncoesGerais.versaoAtual){
objRetorno.vOk = false;
}
}
diff --git a/lib/home/home.dart b/lib/home/home.dart
index beab829..9e87e5c 100644
--- a/lib/home/home.dart
+++ b/lib/home/home.dart
@@ -1,5 +1,7 @@
import 'package:decpisos/funcoes_gerais.dart';
import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+import 'package:line_icons/line_icons.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:webview_flutter/webview_flutter.dart';
@@ -14,25 +16,46 @@ class _HomeScreenState extends State with AutomaticKeepAliveClientMi
@override
Widget build(BuildContext context) {
super.build(context);
- return SafeArea(
- child: this.error ? this._buildError() : WebView(
- initialUrl: FuncoesGerais.homeURL,
- javascriptMode: JavascriptMode.unrestricted,
- onWebResourceError: (err){
- this.error = true;
- this.msg = err.description;
- setState(() {
- });
- },
- navigationDelegate: (navigation){
- print(navigation.url);
- if (navigation.url.startsWith(FuncoesGerais.dominioPermitido)) {
- return NavigationDecision.navigate;
- }
- //print('allowing navigation to $request');
- launch(navigation.url);
- return NavigationDecision.prevent;
- },
+ return Scaffold(
+ appBar: AppBar(
+ title: Text(FuncoesGerais.nomeApp),
+ centerTitle: false,
+ actions: [
+ IconButton(
+ onPressed: (){
+ if(Get.theme.brightness == Brightness.dark){
+ Get.changeThemeMode(ThemeMode.light);
+ }
+ else{
+ Get.changeThemeMode(ThemeMode.dark);
+ }
+ },
+ tooltip: 'Alternar modo dark/light',
+ icon: Icon(LineIcons.palette)
+ )
+ ],
+ ),
+ body: SafeArea(
+ child: this.error ? this._buildError() : WebView(
+ initialUrl: FuncoesGerais.homeURL,
+ javascriptMode: JavascriptMode.unrestricted,
+ onWebResourceError: (err){
+ this.error = true;
+ this.msg = err.description;
+ setState(() {
+ });
+ },
+ allowsInlineMediaPlayback: true,
+ navigationDelegate: (navigation){
+ print(navigation.url);
+ if (navigation.url.startsWith(FuncoesGerais.dominioPermitido)) {
+ return NavigationDecision.navigate;
+ }
+ //print('allowing navigation to $request');
+ launch(navigation.url);
+ return NavigationDecision.prevent;
+ },
+ ),
),
);
}
@@ -44,12 +67,18 @@ class _HomeScreenState extends State with AutomaticKeepAliveClientMi
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(msg),
- RaisedButton(onPressed: (){
+ ElevatedButton(onPressed: (){
this.error = false;
this.msg = '';
setState(() {
- });
- }, child: Text('Atualizar'),)
+ });
+ }, child: Text('Atualizar'))
+ // RaisedButton(onPressed: (){
+ // this.error = false;
+ // this.msg = '';
+ // setState(() {
+ // });
+ // }, child: Text('Atualizar'),)
],
),
);
diff --git a/lib/index/index_controller.dart b/lib/index/index_controller.dart
index f248d13..3ceb615 100644
--- a/lib/index/index_controller.dart
+++ b/lib/index/index_controller.dart
@@ -10,19 +10,19 @@ import 'package:line_icons/line_icons.dart';
//import 'package:line_icons/line_icons.dart';
class IndexController extends GetxController with SingleGetTickerProviderMixin {
- TabController tabController;
- var tabs = List().obs;
- var childrenTabs = List().obs;
+ TabController? tabController;
+ var tabs = [].obs;
+ var childrenTabs = [].obs;
@override
void onInit() {
super.onInit();
this.initTabs();
- this.tabController.index = 1;
+ this.tabController!.index = 1;
}
@override
void onClose() {
- this.tabController.dispose();
+ this.tabController!.dispose();
super.onClose();
}
diff --git a/lib/instagram_embed/instagram_embed.dart b/lib/instagram_embed/instagram_embed.dart
index 9290ff1..5dac883 100644
--- a/lib/instagram_embed/instagram_embed.dart
+++ b/lib/instagram_embed/instagram_embed.dart
@@ -44,12 +44,18 @@ class _InstagramScreenState extends State with AutomaticKeepAli
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(msg),
- RaisedButton(onPressed: (){
+ ElevatedButton(onPressed: (){
this.error = false;
this.msg = '';
setState(() {
- });
- }, child: Text('Atualizar'),)
+ });
+ }, child: Text('Atualizar'))
+ // RaisedButton(onPressed: (){
+ // this.error = false;
+ // this.msg = '';
+ // setState(() {
+ // });
+ // }, child: Text('Atualizar'),)
],
),
);
diff --git a/lib/main.dart b/lib/main.dart
index 817a1f5..ad003f8 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,11 +1,21 @@
import 'package:decpisos/funcoes_gerais.dart';
+import 'package:firebase_core/firebase_core.dart';
+//import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:get/get.dart';
import 'splash/splash.dart';
-void main() {
+Future main() async {
+ WidgetsFlutterBinding.ensureInitialized();
+ await Firebase.initializeApp();
+ // Set the background messaging handler early on, as a named top-level function
+ // FirebaseMessaging.onBackgroundMessage((RemoteMessage message) async {
+ // await Firebase.initializeApp();
+ // print('Handling a background message ${message.messageId}');
+ // });
+
runApp(GetMaterialApp(
title: FuncoesGerais.nomeApp,
localizationsDelegates: [
@@ -17,11 +27,14 @@ void main() {
supportedLocales: [
const Locale('pt'),
],
+ theme: ThemeData.light().copyWith(primaryColor: Color(0xFF05578e)),
+ darkTheme: ThemeData.dark().copyWith(primaryColor: Colors.black87),
+ // theme: ThemeData(
+ // //brightness: Brightness.dark,
+ // visualDensity: VisualDensity.adaptivePlatformDensity,
+ // primarySwatch: Colors.blueGrey
+ // ),
themeMode: ThemeMode.dark,
- theme: ThemeData(
- brightness: Brightness.dark,
- visualDensity: VisualDensity.adaptivePlatformDensity,
- ),
home: SplashScreen()
));
}
diff --git a/lib/notificacoes/api/notificacoes_api.dart b/lib/notificacoes/api/notificacoes_api.dart
index 03498ef..39fd598 100644
--- a/lib/notificacoes/api/notificacoes_api.dart
+++ b/lib/notificacoes/api/notificacoes_api.dart
@@ -1,6 +1,7 @@
import 'dart:convert';
+import 'package:get/get_utils/src/get_utils/get_utils.dart';
import 'package:http/http.dart' as http;
import '../../default_response_api.dart';
@@ -26,9 +27,10 @@ class NotificacoesApi{
Map heads = Map();
heads["Content-type"] = "application/json; charset=utf-8";
- var response = await http.get(url, headers: heads);
+ var response = await http.get(Uri.parse(url), headers: heads);
- if (response != null) {
+ //if (response != null) {
+ if (!GetUtils.isNullOrBlank(response.body)!) {
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
retorno = NotificacoesResponse.fromJson(data);
@@ -47,7 +49,7 @@ class NotificacoesApi{
return retorno;
}
- Future getNotificacao(int id) async{
+ Future getNotificacao(int? id) async{
var retorno = new NotificacaoResponse(
errorCode: 0,
errorMessage: ""
@@ -63,9 +65,9 @@ class NotificacoesApi{
Map heads = Map();
heads["Content-type"] = "application/json; charset=utf-8";
- var response = await http.get(url, headers: heads);
+ var response = await http.get(Uri.parse(url), headers: heads);
- if (response != null) {
+ if (!GetUtils.isNullOrBlank(response.body)!) {
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
retorno = NotificacaoResponse.fromJson(data);
@@ -100,9 +102,9 @@ class NotificacoesApi{
var body = json.encode(post);
- var response = await http.post(url, headers: heads, body: body);
+ var response = await http.post(Uri.parse(url), headers: heads, body: body);
- if (response != null) {
+ if (!GetUtils.isNullOrBlank(response.body)!) {
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
objRetorno = DefaultResponseApi.fromJson(data);
@@ -135,10 +137,10 @@ class NotificacoesApi{
var body = json.encode(post);
- var response = await http.post(url, headers: heads, body: body);
+ var response = await http.post(Uri.parse(url), headers: heads, body: body);
- if (response != null) {
+ if (!GetUtils.isNullOrBlank(response.body)!) {
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
objRetorno = DefaultResponseApi.fromJson(data);
diff --git a/lib/notificacoes/api/notificacoes_classes.dart b/lib/notificacoes/api/notificacoes_classes.dart
index a9a4b88..a25dd21 100644
--- a/lib/notificacoes/api/notificacoes_classes.dart
+++ b/lib/notificacoes/api/notificacoes_classes.dart
@@ -1,6 +1,6 @@
class NotificacaoLikeRequest {
- int iD;
- String like;
+ int? iD;
+ String? like;
NotificacaoLikeRequest({this.iD, this.like});
@@ -18,8 +18,8 @@ class NotificacaoLikeRequest {
}
class NotificacaoLidaRequest {
- String latitude;
- String longitude;
+ String? latitude;
+ String? longitude;
NotificacaoLidaRequest({this.latitude, this.longitude});
@@ -38,9 +38,9 @@ class NotificacaoLidaRequest {
class NotificacaoResponse {
- NotificacaoResults result;
- int errorCode;
- String errorMessage;
+ NotificacaoResults? result;
+ int? errorCode;
+ String? errorMessage;
NotificacaoResponse({this.result, this.errorCode, this.errorMessage});
@@ -54,7 +54,7 @@ class NotificacaoResponse {
Map toJson() {
final Map data = new Map();
if (this.result != null) {
- data['Result'] = this.result.toJson();
+ data['Result'] = this.result!.toJson();
}
data['ErrorCode'] = this.errorCode;
data['ErrorMessage'] = this.errorMessage;
@@ -63,18 +63,18 @@ class NotificacaoResponse {
}
class NotificacoesResponse {
- List results;
- int errorCode;
- String errorMessage;
- bool loadMore;
+ List? results;
+ int? errorCode;
+ String? errorMessage;
+ bool? loadMore;
NotificacoesResponse({this.results, this.errorCode, this.errorMessage,this.loadMore});
NotificacoesResponse.fromJson(Map json) {
if (json['Results'] != null) {
- results = new List();
+ results = [];
json['Results'].forEach((v) {
- results.add(new NotificacaoResults.fromJson(v));
+ results!.add(new NotificacaoResults.fromJson(v));
});
}
errorCode = json['ErrorCode'];
@@ -84,7 +84,7 @@ class NotificacoesResponse {
Map toJson() {
final Map data = new Map();
if (this.results != null) {
- data['Results'] = this.results.map((v) => v.toJson()).toList();
+ data['Results'] = this.results!.map((v) => v.toJson()).toList();
}
data['ErrorCode'] = this.errorCode;
data['ErrorMessage'] = this.errorMessage;
@@ -93,15 +93,15 @@ class NotificacoesResponse {
}
class NotificacaoResults {
- int iD;
- String titulo;
- String texto;
- String conteudo;
- String dataNotificacao;
- String tipoConteudo;
- bool visualizado;
- String imageUrl;
- String like;
+ int? iD;
+ String? titulo;
+ String? texto;
+ String? conteudo;
+ String? dataNotificacao;
+ String? tipoConteudo;
+ bool? visualizado;
+ String? imageUrl;
+ String? like;
NotificacaoResults(
{this.iD,
diff --git a/lib/notificacoes/notificacao.dart b/lib/notificacoes/notificacao.dart
index 7950216..3509451 100644
--- a/lib/notificacoes/notificacao.dart
+++ b/lib/notificacoes/notificacao.dart
@@ -15,17 +15,17 @@ class NotificacaoDetail extends StatelessWidget {
//
//title: Obx(() => Text(c.notificacaoDetail.value.result.titulo ?? 'Notificação')),
),
- body: Obx(() => c.loadingDetail.value ? Center(child: CircularProgressIndicator(),) : c.notificacaoDetail.value.errorCode != 0 ? Center(child: Text(c.notificacaoDetail.value.errorMessage),) : ListView(
+ body: Obx(() => c.loadingDetail.value ? Center(child: CircularProgressIndicator(),) : c.notificacaoDetail.value.errorCode != 0 ? Center(child: Text(c.notificacaoDetail.value.errorMessage!),) : ListView(
children: [
Visibility(
- visible: GetUtils.isNullOrBlank(c.notificacaoDetail.value.result.imageUrl) == false,
+ visible: GetUtils.isNullOrBlank(c.notificacaoDetail.value.result!.imageUrl) == false,
child: Container(
color: Colors.black38,
height: 250,
child: Padding(
padding: const EdgeInsets.all(70.0),
child: Image.network(
- c.notificacaoDetail.value.result.imageUrl ?? '',
+ c.notificacaoDetail.value.result!.imageUrl ?? '',
fit: BoxFit.contain,
),
),
@@ -37,14 +37,17 @@ class NotificacaoDetail extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
- c.notificacaoDetail.value.result.titulo,
+ c.notificacaoDetail.value.result!.titulo!,
style: TextStyle(fontSize: 30.0,),
),
const SizedBox(height: 10),
Html(
- data: c.notificacaoDetail.value.result.conteudo,
- onLinkTap: (url){
- launch(url);
+ data: c.notificacaoDetail.value.result!.conteudo,
+ // onLinkTap: (url){
+ // launch(url);
+ // },
+ onLinkTap: (url,ctx,mp,element){
+ launch(url!);
},
// style: Theme.of(context).textTheme.bodyText2.copyWith(
// color: Colors.black54,
diff --git a/lib/notificacoes/notificacoes.dart b/lib/notificacoes/notificacoes.dart
index 2dec89d..5616644 100644
--- a/lib/notificacoes/notificacoes.dart
+++ b/lib/notificacoes/notificacoes.dart
@@ -71,7 +71,7 @@ class NotificacoesScreen extends StatelessWidget {
// child: this._buildListTile(index)
// );
} else if (index > 1) {
- if(c.loadMore == null || c.loadMore){
+ if(c.loadMore){
c.getNotificacoesBloc();
return Container(
height: 40,
@@ -113,8 +113,9 @@ class NotificacoesScreen extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
- Text(c.errorMessage),
- RaisedButton(onPressed: c.refresh, child: Text('Atualizar'),)
+ Text(c.errorMessage!),
+ ElevatedButton(onPressed: c.refresh, child: Text('Atualizar'))
+ //RaisedButton(onPressed: c.refresh, child: Text('Atualizar'),)
],
),
);
@@ -123,12 +124,12 @@ class NotificacoesScreen extends StatelessWidget {
Widget _buildListTile(int index) {
if(c.notificacoesResults[index].tipoConteudo == 'L'){
return this._buildListTileTile(index: index,onTap: (){
- c.notificacaoLidaBloc(c.notificacoesResults[index].iD).then((value) => launch(c.notificacoesResults[index].conteudo));
+ c.notificacaoLidaBloc(c.notificacoesResults[index].iD).then((value) => launch(c.notificacoesResults[index].conteudo!));
});
}
return OpenContainer(
//openColor: Colors.transparent,
- closedColor: Colors.black87.withOpacity(0.2),
+ closedColor: Get.theme.primaryColor.withOpacity(0.2),
transitionType: ContainerTransitionType.fadeThrough,
openBuilder: (BuildContext _, VoidCallback openContainer) {
c.notificacoesResults[index].visualizado = true;
@@ -136,7 +137,7 @@ class NotificacoesScreen extends StatelessWidget {
//return _DetailsPage();
return NotificacaoDetail();
},
- onClosed: (bool isMarkedAsDone) {
+ onClosed: (bool? isMarkedAsDone) {
c.notificacaoLidaBloc(c.notificacoesResults[index].iD);
if (isMarkedAsDone ?? false)
Get.rawSnackbar(message: 'Marked as done!');
@@ -150,21 +151,21 @@ class NotificacoesScreen extends StatelessWidget {
);
}
- Widget _buildListTileTile({Function onTap,@required int index}){
+ Widget _buildListTileTile({Function? onTap,required int index}){
return ListTile(
leading: CircleAvatar(
- backgroundImage: GetUtils.isNullOrBlank(c.notificacoesResults[index].imageUrl) ? AssetImage(
+ backgroundImage: (GetUtils.isNullOrBlank(c.notificacoesResults[index].imageUrl)! ? AssetImage(
'assets/images/logo.png',
- ) : NetworkImage(c.notificacoesResults[index].imageUrl),
+ ) : NetworkImage(c.notificacoesResults[index].imageUrl!)) as ImageProvider