android AGP upgraded & enhancement.

design_3.0_task_module_new_merge
Sikander Saleem 4 weeks ago
parent 88f64e2297
commit 4d035e9c46

@ -32,13 +32,18 @@ if (keystorePropertiesFile.exists()) {
apply plugin: "com.huawei.agconnect"
android {
compileSdkVersion 34
namespace 'com.example.test_sa'
// ndkVersion flutter.ndkVersion
ndkVersion = "25.1.8937393"
ndkVersion = "27.0.12077973"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_21
targetCompatibility JavaVersion.VERSION_21
}
kotlinOptions {
jvmTarget = "21" // Must match the compileOptions target
}
defaultConfig {
@ -82,5 +87,6 @@ flutter {
dependencies {
implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300'
implementation 'com.huawei.hms:push:6.7.0.300'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
}

@ -1,5 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test_sa">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

@ -4,12 +4,12 @@ buildscript {
google()
mavenCentral()
maven { url "https://jitpack.io" }
maven {url 'https://developer.huawei.com/repo/'}
maven { url 'https://developer.huawei.com/repo/' }
}
dependencies {
classpath "com.android.tools.build:gradle:7.1.2"
classpath 'com.huawei.agconnect:agcp:1.5.2.300'
classpath "com.android.tools.build:gradle:8.7.0"
classpath 'com.huawei.agconnect:agcp:1.9.1.304'
}
}
configurations.all {
@ -19,7 +19,7 @@ allprojects {
repositories {
google()
mavenCentral()
maven {url 'https://developer.huawei.com/repo/'}
maven { url 'https://developer.huawei.com/repo/' }
}
}
@ -34,10 +34,20 @@ subprojects {
}
}
}
}
//subprojects {
// project.buildDir = "${rootProject.buildDir}/${project.name}"
// project.evaluationDependsOn(':app')
//}
//rootProject.buildDir = File("../build")
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
subprojects {
project.evaluationDependsOn(":app")
}

@ -1,6 +1,6 @@
#Thu Oct 24 09:39:31 AST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

@ -31,7 +31,7 @@ pluginManagement {
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.1.2" apply false // Replace {agpVersion} with your version, e.g., "7.3.0"
id "com.android.application" version "8.7.0" apply false
id "org.jetbrains.kotlin.android" version "1.9.25" apply false // Replace {kotlinVersion} with your version, e.g., "1.7.10"
id "com.google.gms.google-services" version "4.3.13" apply false // Replace {kotlinVersion} with your version, e.g., "1.7.10"
}

@ -21,7 +21,7 @@ class AssetByIdModel {
AssetReplace? floor;
Department? department;
Lookup? room;
int? testsDay;
num? testsDay;
num? purchasingPrice;
String? nbv;
Lookup? currency;

@ -1,72 +1,73 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
class ScanQrView extends StatefulWidget {
const ScanQrView({Key? key}) : super(key: key);
@override
_ScanQrViewState createState() => _ScanQrViewState();
}
class _ScanQrViewState extends State<ScanQrView> {
// Barcode result;
QRViewController? _controller;
bool _scanDone = false;
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR_scanner');
// In order to get hot reload to work we need to pause the camera if the platform
// is android, or resume the camera if the platform is iOS.
@override
void reassemble() {
super.reassemble();
if (Platform.isAndroid) {
_controller?.pauseCamera();
} else if (Platform.isIOS) {
_controller?.resumeCamera();
}
}
@override
void dispose() {
super.dispose();
_controller?.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: [
QRView(
key: qrKey,
onQRViewCreated: (QRViewController controller) {
setState(() {
_controller = controller;
});
controller.scannedDataStream.listen((scanData) {
if (!_scanDone) {
_scanDone = true;
Navigator.of(context).pop(scanData.code);
}
});
},
overlay: QrScannerOverlayShape(borderColor: Colors.red, borderRadius: 10, borderLength: 30, borderWidth: 10, cutOutSize: 280),
),
Padding(
padding: const EdgeInsets.all(12.0),
child: SizedBox(
height: 100.toScreenHeight,
child: DefaultAppBar(title: context.translation.scanQr)),
)
],
),
);
}
}
// import 'dart:io';
//
// @todo delete
// import 'package:flutter/material.dart';
// import 'package:qr_code_scanner/qr_code_scanner.dart';
// import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/extensions/int_extensions.dart';
// import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
//
//
// class ScanQrView extends StatefulWidget {
// const ScanQrView({Key? key}) : super(key: key);
//
// @override
// _ScanQrViewState createState() => _ScanQrViewState();
// }
//
// class _ScanQrViewState extends State<ScanQrView> {
// // Barcode result;
// QRViewController? _controller;
// bool _scanDone = false;
// final GlobalKey qrKey = GlobalKey(debugLabel: 'QR_scanner');
//
// // In order to get hot reload to work we need to pause the camera if the platform
// // is android, or resume the camera if the platform is iOS.
// @override
// void reassemble() {
// super.reassemble();
// if (Platform.isAndroid) {
// _controller?.pauseCamera();
// } else if (Platform.isIOS) {
// _controller?.resumeCamera();
// }
// }
//
// @override
// void dispose() {
// super.dispose();
// _controller?.dispose();
// }
//
// @override
// Widget build(BuildContext context) {
// return Scaffold(
//
// body: Stack(
// children: [
// QRView(
// key: qrKey,
// onQRViewCreated: (QRViewController controller) {
// setState(() {
// _controller = controller;
// });
// controller.scannedDataStream.listen((scanData) {
// if (!_scanDone) {
// _scanDone = true;
// Navigator.of(context).pop(scanData.code);
// }
// });
// },
// overlay: QrScannerOverlayShape(borderColor: Colors.red, borderRadius: 10, borderLength: 30, borderWidth: 10, cutOutSize: 280),
// ),
// Padding(
// padding: const EdgeInsets.all(12.0),
// child: SizedBox(
// height: 100.toScreenHeight,
// child: DefaultAppBar(title: context.translation.scanQr)),
// )
// ],
// ),
// );
// }
// }

@ -45,6 +45,7 @@ class _AssetDetailPageState extends State<AssetDetailPage> {
assetId ??= ModalRoute.of(context)?.settings.arguments as int;
_assetProvider ??= Provider.of<AssetProvider>(context, listen: false);
_assetProvider?.stateCode = null;
_assetProvider!.getAssetById(assetId!, context.translation);
return Scaffold(
appBar: DefaultAppBar(title: context.translation.assetDetails),
body: FutureBuilder<AssetByIdModel>(
@ -131,8 +132,8 @@ class _AssetDetailPageState extends State<AssetDetailPage> {
const Divider(color: AppColor.neutral30, height: 1, thickness: 1),
8.height,
"${context.translation.installationDate}: ${assetModel.installationDate?.toAssetDetailsFormat ?? "-"}".bodyText(context),
"${context.translation.nextPmDate}: ${assetModel.nextPMDate?.toAssetDetailsFormat}".bodyText(context),
"${context.translation.lastPmDate}: ${assetModel.lastPMDate?.toAssetDetailsFormat}".bodyText(context),
"${context.translation.nextPmDate}: ${assetModel.nextPMDate?.toAssetDetailsFormat ?? "-"}".bodyText(context),
"${context.translation.lastPmDate}: ${assetModel.lastPMDate?.toAssetDetailsFormat ?? "-"}".bodyText(context),
if ((assetModel.modelDefinition?.assetDescription ?? "").isNotEmpty) ...[
8.height,
const Divider(color: AppColor.neutral30, height: 1, thickness: 1),

@ -2,7 +2,7 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
import 'package:qr_code_scanner_plus/qr_code_scanner_plus.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';

@ -1,7 +1,7 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
import 'package:qr_code_scanner_plus/qr_code_scanner_plus.dart';
import '../buttons/app_icon_button.dart';

@ -1,79 +1,79 @@
import 'package:flutter/material.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
class QrScannerDialog extends StatefulWidget {
@override
State<QrScannerDialog> createState() => _QrScannerDialogState();
}
class _QrScannerDialogState extends State<QrScannerDialog> {
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
Barcode? result;
QRViewController? controller;
bool isPicked = false;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
width: double.infinity,
height: double.infinity,
color: Colors.white,
child: Column(
children: [
Expanded(
flex: 1,
child: QRView(
key: qrKey,
onQRViewCreated: _onQRViewCreated,
),
),
// Expanded(
// flex: 1,
// child: Center(
// child: (result != null)
// ? Text(
// 'Barcode Type: ${result!.format} Data: ${result!.code}')
// : Text('Scan a code'),
// ),
// ),
Padding(
padding: const EdgeInsets.all(12.0),
child: AppFilledButton(
label: "LocaleKeys.cancel.tr()",
onPressed: () {
Navigator.pop(context);
},
),
),
],
),
),
);
}
void _onQRViewCreated(QRViewController controller) {
this.controller = controller;
controller.scannedDataStream.listen((scanData) {
setState(() {
result = scanData;
if (!isPicked) {
isPicked = true;
Navigator.pop(context, result!.code);
}
});
});
controller.pauseCamera();
controller.resumeCamera();
}
@override
void dispose() {
controller?.dispose();
super.dispose();
}
}
//
// import 'package:flutter/material.dart';
//
// import 'package:qr_code_scanner/qr_code_scanner.dart';
// import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
// todo @delete
// class QrScannerDialog extends StatefulWidget {
// @override
// State<QrScannerDialog> createState() => _QrScannerDialogState();
// }
//
// class _QrScannerDialogState extends State<QrScannerDialog> {
// final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
// Barcode? result;
// QRViewController? controller;
// bool isPicked = false;
//
// @override
// Widget build(BuildContext context) {
// return Scaffold(
// body: Container(
// width: double.infinity,
// height: double.infinity,
// color: Colors.white,
// child: Column(
// children: [
// Expanded(
// flex: 1,
// child: QRView(
// key: qrKey,
// onQRViewCreated: _onQRViewCreated,
// ),
// ),
// // Expanded(
// // flex: 1,
// // child: Center(
// // child: (result != null)
// // ? Text(
// // 'Barcode Type: ${result!.format} Data: ${result!.code}')
// // : Text('Scan a code'),
// // ),
// // ),
// Padding(
// padding: const EdgeInsets.all(12.0),
// child: AppFilledButton(
// label: "LocaleKeys.cancel.tr()",
// onPressed: () {
// Navigator.pop(context);
// },
// ),
// ),
// ],
// ),
// ),
// );
// }
//
// void _onQRViewCreated(QRViewController controller) {
// this.controller = controller;
//
// controller.scannedDataStream.listen((scanData) {
// setState(() {
// result = scanData;
// if (!isPicked) {
// isPicked = true;
// Navigator.pop(context, result!.code);
// }
// });
// });
// controller.pauseCamera();
// controller.resumeCamera();
// }
//
// @override
// void dispose() {
// controller?.dispose();
// super.dispose();
// }
// }

@ -689,18 +689,18 @@ packages:
dependency: "direct main"
description:
name: huawei_location
sha256: db937f0df4073ba6f3cdc1005855ee231aaf6bf5c2bd05a702d928d7e8bb4ee9
sha256: "3100d6b2b11df56481b8deade71baa84970e0bae0ade6ec56407be2b036af355"
url: "https://pub.dev"
source: hosted
version: "6.12.0+303"
version: "6.14.2+301"
huawei_push:
dependency: "direct main"
description:
name: huawei_push
sha256: "94c70987591442e301745e881ee2768ca5349800294bb7bdd46f9f80d1096c53"
sha256: d9bdbc62d5b6a07fe2bff92790682c77ffcc8b56bafba8c12700d2b4b0e30a70
url: "https://pub.dev"
source: hosted
version: "6.12.0+302"
version: "6.13.0+300"
image:
dependency: transitive
description:
@ -1285,14 +1285,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "6.1.2"
qr_code_scanner:
qr_code_scanner_plus:
dependency: "direct main"
description:
name: qr_code_scanner
sha256: f23b68d893505a424f0bd2e324ebea71ed88465d572d26bb8d2e78a4749591fd
name: qr_code_scanner_plus
sha256: a0f1ac8e13299b3db2646635f252fe2ec67222b848b24ed34d11052faf080bfa
url: "https://pub.dev"
source: hosted
version: "1.0.1"
version: "2.0.12"
recase:
dependency: transitive
description:

@ -55,7 +55,7 @@ dependencies:
speech_to_text: ^7.0.0
firebase_core: ^3.4.1
firebase_messaging: ^15.1.1
qr_code_scanner: ^1.0.1
qr_code_scanner_plus: ^2.0.12
flutter_sound: ^9.3.1
permission_handler: ^11.3.1
rive: ^0.13.13
@ -86,8 +86,8 @@ dependencies:
flutter_custom_month_picker: ^0.1.3
local_auth: ^2.3.0
google_api_availability: ^5.0.0
huawei_push: ^6.5.0+300
huawei_location: ^6.11.0+301
huawei_push: ^6.13.0+300
huawei_location: ^6.14.2+301
geolocator: ^9.0.2
nfc_manager: ^3.2.0
wifi_iot: ^0.3.19+1

Loading…
Cancel
Save