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" apply plugin: "com.huawei.agconnect"
android { android {
compileSdkVersion 34 namespace 'com.example.test_sa'
// ndkVersion flutter.ndkVersion // ndkVersion flutter.ndkVersion
ndkVersion = "25.1.8937393" ndkVersion = "27.0.12077973"
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 coreLibraryDesugaringEnabled true
targetCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_21
targetCompatibility JavaVersion.VERSION_21
}
kotlinOptions {
jvmTarget = "21" // Must match the compileOptions target
} }
defaultConfig { defaultConfig {
@ -82,5 +87,6 @@ flutter {
dependencies { dependencies {
implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300' implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300'
implementation 'com.huawei.hms:push:6.7.0.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" <manifest xmlns:android="http://schemas.android.com/apk/res/android">
package="com.example.test_sa">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" /> <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

@ -4,12 +4,12 @@ buildscript {
google() google()
mavenCentral() mavenCentral()
maven { url "https://jitpack.io" } maven { url "https://jitpack.io" }
maven {url 'https://developer.huawei.com/repo/'} maven { url 'https://developer.huawei.com/repo/' }
} }
dependencies { dependencies {
classpath "com.android.tools.build:gradle:7.1.2" classpath "com.android.tools.build:gradle:8.7.0"
classpath 'com.huawei.agconnect:agcp:1.5.2.300' classpath 'com.huawei.agconnect:agcp:1.9.1.304'
} }
} }
configurations.all { configurations.all {
@ -19,7 +19,7 @@ allprojects {
repositories { repositories {
google() google()
mavenCentral() 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 { subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}" 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 #Thu Oct 24 09:39:31 AST 2024
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

@ -31,7 +31,7 @@ pluginManagement {
plugins { plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0" 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 "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" 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; AssetReplace? floor;
Department? department; Department? department;
Lookup? room; Lookup? room;
int? testsDay; num? testsDay;
num? purchasingPrice; num? purchasingPrice;
String? nbv; String? nbv;
Lookup? currency; Lookup? currency;

@ -1,72 +1,73 @@
import 'dart:io'; // import 'dart:io';
//
import 'package:flutter/material.dart'; // @todo delete
import 'package:qr_code_scanner/qr_code_scanner.dart'; // import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart'; // import 'package:qr_code_scanner/qr_code_scanner.dart';
import 'package:test_sa/extensions/int_extensions.dart'; // import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.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); // class ScanQrView extends StatefulWidget {
// const ScanQrView({Key? key}) : super(key: key);
@override //
_ScanQrViewState createState() => _ScanQrViewState(); // @override
} // _ScanQrViewState createState() => _ScanQrViewState();
// }
class _ScanQrViewState extends State<ScanQrView> { //
// Barcode result; // class _ScanQrViewState extends State<ScanQrView> {
QRViewController? _controller; // // Barcode result;
bool _scanDone = false; // QRViewController? _controller;
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR_scanner'); // 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. // // In order to get hot reload to work we need to pause the camera if the platform
@override // // is android, or resume the camera if the platform is iOS.
void reassemble() { // @override
super.reassemble(); // void reassemble() {
if (Platform.isAndroid) { // super.reassemble();
_controller?.pauseCamera(); // if (Platform.isAndroid) {
} else if (Platform.isIOS) { // _controller?.pauseCamera();
_controller?.resumeCamera(); // } else if (Platform.isIOS) {
} // _controller?.resumeCamera();
} // }
// }
@override //
void dispose() { // @override
super.dispose(); // void dispose() {
_controller?.dispose(); // super.dispose();
} // _controller?.dispose();
// }
@override //
Widget build(BuildContext context) { // @override
return Scaffold( // Widget build(BuildContext context) {
// return Scaffold(
body: Stack( //
children: [ // body: Stack(
QRView( // children: [
key: qrKey, // QRView(
onQRViewCreated: (QRViewController controller) { // key: qrKey,
setState(() { // onQRViewCreated: (QRViewController controller) {
_controller = controller; // setState(() {
}); // _controller = controller;
controller.scannedDataStream.listen((scanData) { // });
if (!_scanDone) { // controller.scannedDataStream.listen((scanData) {
_scanDone = true; // if (!_scanDone) {
Navigator.of(context).pop(scanData.code); // _scanDone = true;
} // Navigator.of(context).pop(scanData.code);
}); // }
}, // });
overlay: QrScannerOverlayShape(borderColor: Colors.red, borderRadius: 10, borderLength: 30, borderWidth: 10, cutOutSize: 280), // },
), // overlay: QrScannerOverlayShape(borderColor: Colors.red, borderRadius: 10, borderLength: 30, borderWidth: 10, cutOutSize: 280),
Padding( // ),
padding: const EdgeInsets.all(12.0), // Padding(
child: SizedBox( // padding: const EdgeInsets.all(12.0),
height: 100.toScreenHeight, // child: SizedBox(
child: DefaultAppBar(title: context.translation.scanQr)), // 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; assetId ??= ModalRoute.of(context)?.settings.arguments as int;
_assetProvider ??= Provider.of<AssetProvider>(context, listen: false); _assetProvider ??= Provider.of<AssetProvider>(context, listen: false);
_assetProvider?.stateCode = null; _assetProvider?.stateCode = null;
_assetProvider!.getAssetById(assetId!, context.translation);
return Scaffold( return Scaffold(
appBar: DefaultAppBar(title: context.translation.assetDetails), appBar: DefaultAppBar(title: context.translation.assetDetails),
body: FutureBuilder<AssetByIdModel>( body: FutureBuilder<AssetByIdModel>(
@ -131,8 +132,8 @@ class _AssetDetailPageState extends State<AssetDetailPage> {
const Divider(color: AppColor.neutral30, height: 1, thickness: 1), const Divider(color: AppColor.neutral30, height: 1, thickness: 1),
8.height, 8.height,
"${context.translation.installationDate}: ${assetModel.installationDate?.toAssetDetailsFormat ?? "-"}".bodyText(context), "${context.translation.installationDate}: ${assetModel.installationDate?.toAssetDetailsFormat ?? "-"}".bodyText(context),
"${context.translation.nextPmDate}: ${assetModel.nextPMDate?.toAssetDetailsFormat}".bodyText(context), "${context.translation.nextPmDate}: ${assetModel.nextPMDate?.toAssetDetailsFormat ?? "-"}".bodyText(context),
"${context.translation.lastPmDate}: ${assetModel.lastPMDate?.toAssetDetailsFormat}".bodyText(context), "${context.translation.lastPmDate}: ${assetModel.lastPMDate?.toAssetDetailsFormat ?? "-"}".bodyText(context),
if ((assetModel.modelDefinition?.assetDescription ?? "").isNotEmpty) ...[ if ((assetModel.modelDefinition?.assetDescription ?? "").isNotEmpty) ...[
8.height, 8.height,
const Divider(color: AppColor.neutral30, height: 1, thickness: 1), const Divider(color: AppColor.neutral30, height: 1, thickness: 1),

@ -2,7 +2,7 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.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/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';

@ -1,7 +1,7 @@
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; 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'; import '../buttons/app_icon_button.dart';

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

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

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

Loading…
Cancel
Save