diff --git a/android/app/build.gradle b/android/app/build.gradle
index 0cbdb6e..3a5430a 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -8,7 +8,7 @@ if (localPropertiesFile.exists()) {
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
- throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+ throw GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 965383b..488914e 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -30,6 +30,15 @@
+
+
+
@@ -39,6 +48,7 @@
+
diff --git a/android/app/src/main/res/xml/filepaths.xml b/android/app/src/main/res/xml/filepaths.xml
new file mode 100644
index 0000000..774ca56
--- /dev/null
+++ b/android/app/src/main/res/xml/filepaths.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
index 58a8c74..713d7f6 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -26,6 +26,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
-task clean(type: Delete) {
+tasks.register("clean", Delete) {
delete rootProject.buildDir
}
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index d308160..48b9666 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -78,9 +78,9 @@ DEPENDENCIES:
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- objectbox_flutter_libs (from `.symlinks/plugins/objectbox_flutter_libs/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`)
+ - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`)
+ - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- wakelock (from `.symlinks/plugins/wakelock/ios`)
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
@@ -120,11 +120,11 @@ EXTERNAL SOURCES:
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
- :path: ".symlinks/plugins/path_provider_foundation/ios"
+ :path: ".symlinks/plugins/path_provider_foundation/darwin"
permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios"
shared_preferences_foundation:
- :path: ".symlinks/plugins/shared_preferences_foundation/ios"
+ :path: ".symlinks/plugins/shared_preferences_foundation/darwin"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
wakelock:
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 93b743f..59029e7 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -227,6 +227,7 @@
files = (
);
inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
diff --git a/lib/config/constant.dart b/lib/config/constant.dart
index 7bd69f9..e852b4f 100644
--- a/lib/config/constant.dart
+++ b/lib/config/constant.dart
@@ -45,3 +45,7 @@ const String LOGIN_API = 'https://mp4.ikksgroup.com' + "/authentication/login";
const String PRODUCT_API = 'https://mp4.ikksgroup.com' + "/example/getProduct";
const String SERVLET_API =
'https://mp4.ikksgroup.com' + "/MobilePortal4_external/UploadPhotoServlet";
+
+// https://blogit.q2ii.fr
+// https://mp4.ikksgroup.com
+const String DOMAIN_CHECK_VERSION = 'https://mp4.ikksgroup.com';
diff --git a/lib/main.dart b/lib/main.dart
index c676a9f..2549e1f 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -60,8 +60,10 @@ Future main() async {
await package_info_plus().initPackageInfo();
// set device screenWidth/height
- SharedPrefs().screenWidth = window.physicalSize.width;
- SharedPrefs().screenHeight = window.physicalSize.height;
+ SharedPrefs().screenWidth =
+ PlatformDispatcher.instance.views.first.physicalSize.width;
+ SharedPrefs().screenHeight =
+ PlatformDispatcher.instance.views.first.physicalSize.height;
// initialize directories
await directories().initDirectories();
diff --git a/lib/network/api_provider.dart b/lib/network/api_provider.dart
index 47278ed..a997956 100644
--- a/lib/network/api_provider.dart
+++ b/lib/network/api_provider.dart
@@ -33,9 +33,9 @@ class ApiProvider {
}
return await _dio.get(url);
- } on DioError catch (e) {
+ } on DioException catch (e) {
//print(e.toString()+' | '+url.toString());
- if (e.type == DioErrorType.badResponse) {
+ if (e.type == DioExceptionType.badResponse) {
int? statusCode = e.response!.statusCode;
if (statusCode == STATUS_NOT_FOUND) {
throw "Api not found";
@@ -44,9 +44,9 @@ class ApiProvider {
} else {
throw e.error.toString();
}
- } else if (e.type == DioErrorType.connectionTimeout) {
+ } else if (e.type == DioExceptionType.connectionTimeout) {
throw e.message.toString();
- } else if (e.type == DioErrorType.cancel) {
+ } else if (e.type == DioExceptionType.cancel) {
throw 'cancel';
}
throw connErr;
@@ -62,9 +62,9 @@ class ApiProvider {
_dio.options.receiveTimeout = Duration(seconds: 4);
return await _dio.post(url, cancelToken: apiToken);
- } on DioError catch (e) {
+ } on DioException catch (e) {
//print(e.toString()+' | '+url.toString());
- if (e.type == DioErrorType.badResponse) {
+ if (e.type == DioExceptionType.badResponse) {
int? statusCode = e.response!.statusCode;
if (statusCode == STATUS_NOT_FOUND) {
throw "Api not found";
@@ -73,9 +73,9 @@ class ApiProvider {
} else {
throw e.error.toString();
}
- } else if (e.type == DioErrorType.connectionTimeout) {
+ } else if (e.type == DioExceptionType.connectionTimeout) {
throw e.message.toString();
- } else if (e.type == DioErrorType.cancel) {
+ } else if (e.type == DioExceptionType.cancel) {
throw 'cancel';
}
throw connErr;
@@ -92,9 +92,9 @@ class ApiProvider {
_dio.options.receiveTimeout = Duration(seconds: 4);
return await _dio.post(url, data: data, cancelToken: apiToken);
- } on DioError catch (e) {
+ } on DioException catch (e) {
//print(e.toString()+' | '+url.toString());
- if (e.type == DioErrorType.badResponse) {
+ if (e.type == DioExceptionType.badResponse) {
int? statusCode = e.response!.statusCode;
if (statusCode == STATUS_NOT_FOUND) {
throw "Api not found";
@@ -103,9 +103,9 @@ class ApiProvider {
} else {
throw e.error.toString();
}
- } else if (e.type == DioErrorType.connectionTimeout) {
+ } else if (e.type == DioExceptionType.connectionTimeout) {
throw e.message.toString();
- } else if (e.type == DioErrorType.cancel) {
+ } else if (e.type == DioExceptionType.cancel) {
throw 'cancel';
}
throw connErr;
@@ -481,4 +481,24 @@ class ApiProvider {
void close() {
_dio.close();
}
+
+ Future checkAppVersion() async {
+ try {
+ final response = await http
+ .get(Uri.parse(DOMAIN_CHECK_VERSION + '/deploy/mobdr/version.json'));
+ final data = jsonDecode(response.body);
+
+ if (data.containsKey('latest_version')) {
+ if (data['latest_version'] != SharedPrefs().appVersion) {
+ // The versions differ
+ return true;
+ }
+ }
+ } catch (e) {
+ print('Error verifying the version : $e');
+ }
+
+ // If an error has occurred or if the versions are identical
+ return false;
+ }
}
diff --git a/lib/ui/account/tab_account.dart b/lib/ui/account/tab_account.dart
index 3c319df..fae6cf8 100644
--- a/lib/ui/account/tab_account.dart
+++ b/lib/ui/account/tab_account.dart
@@ -11,6 +11,7 @@ import 'package:mobdr/ui/account/settings.dart';
import 'package:mobdr/ui/account/log.dart';
import 'package:mobdr/ui/general/notification.dart';
import 'package:mobdr/ui/reusable/reusable_widget.dart';
+import 'package:mobdr/ui/appstore/updatecheck.dart';
import 'package:flutter/material.dart';
import 'package:mobdr/ui/authentication/signin.dart';
import 'dart:convert';
@@ -78,6 +79,8 @@ class _TabAccountPageState extends State
_reusableWidget.divider1(),
_createListMenu('Show logs', LogPage()),
_reusableWidget.divider1(),
+ _createListMenu('Check version', UpdateCheckPage()),
+ _reusableWidget.divider1(),
Container(
margin: EdgeInsets.fromLTRB(0, 18, 0, 0),
child: GestureDetector(
diff --git a/lib/ui/appstore/updatecheck.dart b/lib/ui/appstore/updatecheck.dart
new file mode 100644
index 0000000..9e4ea75
--- /dev/null
+++ b/lib/ui/appstore/updatecheck.dart
@@ -0,0 +1,175 @@
+import 'dart:convert';
+import 'package:flutter/material.dart';
+import 'package:ota_update/ota_update.dart';
+import 'package:http/http.dart' as http;
+
+import 'package:mobdr/service/shared_prefs.dart';
+import 'package:mobdr/config/constant.dart';
+
+class UpdateCheckPage extends StatefulWidget {
+ @override
+ _UpdateCheckPageState createState() => _UpdateCheckPageState();
+}
+
+class _UpdateCheckPageState extends State {
+ OtaEvent? currentEvent = null;
+
+ String _currentVersion = SharedPrefs().appVersion;
+ String _latestVersion = '';
+ String _releaseDate = '';
+ List _releaseNotes = [];
+ String _downloadLink = '';
+ String _checksum = '';
+
+ @override
+ void initState() {
+ super.initState();
+ _fetchLatestVersion();
+ }
+
+ Future _fetchLatestVersion() async {
+ try {
+ final response = await http
+ .get(Uri.parse(DOMAIN_CHECK_VERSION + '/deploy/mobdr/version.json'));
+ final data = jsonDecode(response.body);
+
+ setState(() {
+ _latestVersion = data['latest_version'];
+ _releaseDate = data['release_date'];
+ _releaseNotes = List.from(data['release_notes']);
+ _downloadLink = data['download_link'];
+ _checksum = data['checksum'];
+ });
+ } catch (e) {
+ print('Error retrieving latest version : $e');
+ }
+ }
+
+ Future _doUpdate() async {
+ try {
+ OtaUpdate()
+ .execute(
+ _downloadLink,
+ // OPTIONAL
+ destinationFilename: 'app_release.apk',
+ //OPTIONAL, ANDROID ONLY - ABILITY TO VALIDATE CHECKSUM OF FILE:
+ sha256checksum: _checksum,
+ )
+ .listen(
+ (OtaEvent event) {
+ setState(() => currentEvent = event);
+ },
+ );
+ } catch (e) {
+ print('Failed to make OTA update. Details: $e');
+ }
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: Text('Checking for update'),
+ ),
+ body: Center(
+ child: currentEvent == null
+ ? Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Text(
+ 'Current version : ',
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ fontSize: 16,
+ ),
+ ),
+ Text(
+ _currentVersion,
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ fontSize: 22,
+ color: Colors.red,
+ ),
+ ),
+ SizedBox(height: 16),
+ Text(
+ 'Version available : ',
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ fontSize: 18,
+ ),
+ ),
+ Text(
+ _latestVersion,
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ fontSize: 24,
+ color: Colors.green,
+ ),
+ ),
+ if (_currentVersion != _latestVersion) ...[
+ SizedBox(height: 16),
+ Text(
+ 'Publication date : $_releaseDate',
+ style: TextStyle(fontWeight: FontWeight.bold),
+ ),
+ SizedBox(height: 8),
+ Text(
+ 'Release notes :',
+ style: TextStyle(fontWeight: FontWeight.bold),
+ ),
+ for (String note in _releaseNotes) ...[
+ SizedBox(height: 4),
+ Text('- $note'),
+ ],
+ SizedBox(height: 16),
+ ElevatedButton(
+ onPressed: _doUpdate,
+ child: Text(
+ 'Update',
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ fontSize: 18,
+ ),
+ ),
+ style: ElevatedButton.styleFrom(
+ backgroundColor: Colors.blue,
+ ),
+ ),
+ ] else ...[
+ SizedBox(height: 32),
+ Text(
+ 'You have the latest version',
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ fontSize: 18,
+ ),
+ ),
+ ],
+ ],
+ )
+ : Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Text(
+ 'OTA status',
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ fontSize: 24,
+ ),
+ ),
+ SizedBox(height: 32),
+ Text('${currentEvent!.status}'),
+ SizedBox(height: 16),
+ Text(
+ '${currentEvent!.value}',
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ fontSize: 16,
+ ),
+ )
+ ],
+ )),
+ );
+ }
+}
diff --git a/lib/ui/sync/tab_synchro.dart b/lib/ui/sync/tab_synchro.dart
index 252a931..492b291 100644
--- a/lib/ui/sync/tab_synchro.dart
+++ b/lib/ui/sync/tab_synchro.dart
@@ -7,6 +7,7 @@ import 'package:mobdr/config/global_style.dart';
import 'package:mobdr/main.dart';
import 'package:mobdr/events.dart';
import 'package:mobdr/ui/reusable/reusable_widget.dart';
+import 'package:mobdr/ui/appstore/updatecheck.dart';
import 'package:mobdr/service/shared_prefs.dart';
import 'package:mobdr/network/api_provider.dart';
import 'package:mobdr/db/box_visit_photo.dart';
@@ -71,7 +72,43 @@ class _SynchronizationPageState extends State
_isInternetConnexion = true;
// synchronization start
- startSync();
+ await startSync();
+
+ // Vérifier si une mise à jour est disponible
+ bool isUpdateAvailable = await _apiProvider.checkAppVersion();
+
+ if (isUpdateAvailable) {
+ // Afficher le message de mise à jour
+ showDialog(
+ context: context,
+ builder: (BuildContext context) {
+ return AlertDialog(
+ title: Text("New version available"),
+ content: Text(
+ "A new version is available. Would you like to install it?"),
+ actions: [
+ TextButton(
+ child: Text("No"),
+ onPressed: () {
+ Navigator.pop(context); // Closes the dialog box
+ },
+ ),
+ TextButton(
+ child: Text("Yes"),
+ onPressed: () {
+ Navigator.pop(context); // Closes the dialog box
+ Navigator.push(
+ context,
+ MaterialPageRoute(
+ builder: (context) => UpdateCheckPage()),
+ );
+ },
+ ),
+ ],
+ );
+ },
+ );
+ }
}
}
@@ -200,7 +237,7 @@ class _SynchronizationPageState extends State
}
}
- void startSync() async {
+ Future startSync() async {
// disable navigation bar buttons
eventBus.fire(SynchronizationEvent(true));
diff --git a/macos/Podfile.lock b/macos/Podfile.lock
index c77e049..10e64f5 100644
--- a/macos/Podfile.lock
+++ b/macos/Podfile.lock
@@ -1,4 +1,6 @@
PODS:
+ - audioplayers_darwin (0.0.1):
+ - FlutterMacOS
- connectivity_plus (0.0.1):
- FlutterMacOS
- ReachabilitySwift
@@ -28,13 +30,14 @@ PODS:
- FlutterMacOS
DEPENDENCIES:
+ - audioplayers_darwin (from `Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/macos`)
- connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`)
- device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
- FlutterMacOS (from `Flutter/ephemeral`)
- objectbox_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/objectbox_flutter_libs/macos`)
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
- - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/macos`)
- - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/macos`)
+ - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
+ - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`)
- wakelock_macos (from `Flutter/ephemeral/.symlinks/plugins/wakelock_macos/macos`)
@@ -45,6 +48,8 @@ SPEC REPOS:
- ReachabilitySwift
EXTERNAL SOURCES:
+ audioplayers_darwin:
+ :path: Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/macos
connectivity_plus:
:path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos
device_info_plus:
@@ -56,15 +61,16 @@ EXTERNAL SOURCES:
package_info_plus:
:path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos
path_provider_foundation:
- :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/macos
+ :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
shared_preferences_foundation:
- :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/macos
+ :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin
sqflite:
:path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos
wakelock_macos:
:path: Flutter/ephemeral/.symlinks/plugins/wakelock_macos/macos
SPEC CHECKSUMS:
+ audioplayers_darwin: dcad41de4fbd0099cb3749f7ab3b0cb8f70b810c
connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747
device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
diff --git a/pubspec.lock b/pubspec.lock
index a98caa4..5133d87 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -37,10 +37,10 @@ packages:
dependency: transitive
description:
name: async
- sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
+ sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
- version: "2.10.0"
+ version: "2.11.0"
audioplayers:
dependency: "direct main"
description:
@@ -261,10 +261,10 @@ packages:
dependency: transitive
description:
name: characters
- sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
+ sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev"
source: hosted
- version: "1.2.1"
+ version: "1.3.0"
checked_yaml:
dependency: transitive
description:
@@ -293,10 +293,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
+ sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
url: "https://pub.dev"
source: hosted
- version: "1.17.0"
+ version: "1.17.1"
connectivity_plus:
dependency: "direct main"
description:
@@ -397,10 +397,10 @@ packages:
dependency: "direct main"
description:
name: dio
- sha256: "0894a098594263fe1caaba3520e3016d8a855caeb010a882273189cca10f11e9"
+ sha256: a9d76e72985d7087eb7c5e7903224ae52b337131518d127c554b9405936752b8
url: "https://pub.dev"
source: hosted
- version: "5.1.1"
+ version: "5.2.1+1"
equatable:
dependency: transitive
description:
@@ -429,10 +429,10 @@ packages:
dependency: transitive
description:
name: ffi
- sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
+ sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
url: "https://pub.dev"
source: hosted
- version: "2.0.1"
+ version: "2.0.2"
file:
dependency: transitive
description:
@@ -609,10 +609,10 @@ packages:
dependency: "direct main"
description:
name: image_gallery_saver
- sha256: "009b7722cd8507fd72c7f2cb7cbc46d6e15ad0895469cfcc39a10f86e3556979"
+ sha256: "0aba74216a4d9b0561510cb968015d56b701ba1bd94aace26aacdd8ae5761816"
url: "https://pub.dev"
source: hosted
- version: "2.0.1"
+ version: "2.0.3"
image_picker:
dependency: "direct main"
description:
@@ -657,10 +657,10 @@ packages:
dependency: "direct main"
description:
name: intl
- sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91"
+ sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6
url: "https://pub.dev"
source: hosted
- version: "0.17.0"
+ version: "0.18.0"
io:
dependency: transitive
description:
@@ -673,10 +673,10 @@ packages:
dependency: transitive
description:
name: js
- sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
+ sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
url: "https://pub.dev"
source: hosted
- version: "0.6.5"
+ version: "0.6.7"
json_annotation:
dependency: transitive
description:
@@ -705,10 +705,10 @@ packages:
dependency: transitive
description:
name: matcher
- sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
+ sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
url: "https://pub.dev"
source: hosted
- version: "0.12.13"
+ version: "0.12.15"
material_color_utilities:
dependency: transitive
description:
@@ -721,10 +721,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
+ sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.dev"
source: hosted
- version: "1.8.0"
+ version: "1.9.1"
mime:
dependency: transitive
description:
@@ -781,6 +781,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.2"
+ ota_update:
+ dependency: "direct main"
+ description:
+ name: ota_update
+ sha256: "7ce0af2119458cb7cc3122ecdc4e18ec3c0108162bfab9a4b064d686e1a5fc22"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.1.0"
package_config:
dependency: transitive
description:
@@ -809,10 +817,10 @@ packages:
dependency: transitive
description:
name: path
- sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
+ sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.dev"
source: hosted
- version: "1.8.2"
+ version: "1.8.3"
path_provider:
dependency: transitive
description:
@@ -1190,10 +1198,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
+ sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
url: "https://pub.dev"
source: hosted
- version: "0.4.16"
+ version: "0.5.1"
timing:
dependency: transitive
description:
@@ -1355,5 +1363,5 @@ packages:
source: hosted
version: "3.1.1"
sdks:
- dart: ">=2.19.2 <3.0.0"
+ dart: ">=3.0.0-0 <4.0.0"
flutter: ">=3.3.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 2a3a221..058fb76 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
-version: 0.0.1+1
+version: 0.2.3+1
environment:
sdk: '>=2.19.0 <3.0.0'
@@ -32,7 +32,7 @@ dependencies:
sdk: flutter
# https://pub.dev/packages/dio
- dio: 5.1.1
+ dio: 5.2.1+1
# https://pub.dev/packages/objectbox
objectbox: ^2.0.0
@@ -82,7 +82,7 @@ dependencies:
cached_network_image: 3.2.3
# https://pub.dev/packages/intl
- intl: 0.17.0
+ intl: 0.18.0
# https://pub.dev/packages/carousel_slider
carousel_slider: 4.2.1
@@ -99,7 +99,7 @@ dependencies:
# https://pub.dev/packages/device_info_plus/
device_info_plus: ^8.2.0
- # https://pwebview_flutterub.dev/packages/webview_flutter/
+ # https://pub.dev/packages/webview_flutter/
# MP4
webview_flutter: ^4.2.1
@@ -121,6 +121,9 @@ dependencies:
# https://pub.dev/packages/permission_handler
permission_handler: 10.3.0
+ # https://pub.dev/packages/ota_update
+ ota_update: ^5.1.0
+
# hhttps://pub.dev/packages/timelines
#timelines: ^0.1.0