mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-11-04 07:13:28 +01:00 
			
		
		
		
	Merge pull request #625 from ImranR98/dev
Automatically fix incorrectly inferred App IDs (#103), Improve version text alignment on app page (#607)
This commit is contained in:
		@@ -56,7 +56,7 @@ class InstallError extends ObtainiumError {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class IDChangedError extends ObtainiumError {
 | 
					class IDChangedError extends ObtainiumError {
 | 
				
			||||||
  IDChangedError() : super(tr('appIdMismatch'));
 | 
					  IDChangedError(String newId) : super('${tr('appIdMismatch')} - $newId');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class NotImplementedError extends ObtainiumError {
 | 
					class NotImplementedError extends ObtainiumError {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart';
 | 
				
			|||||||
// ignore: implementation_imports
 | 
					// ignore: implementation_imports
 | 
				
			||||||
import 'package:easy_localization/src/localization.dart';
 | 
					import 'package:easy_localization/src/localization.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const String currentVersion = '0.13.8';
 | 
					const String currentVersion = '0.13.9';
 | 
				
			||||||
const String currentReleaseTag =
 | 
					const String currentReleaseTag =
 | 
				
			||||||
    'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
 | 
					    'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -38,6 +38,7 @@ List<MapEntry<Locale, String>> supportedLocales = const [
 | 
				
			|||||||
  MapEntry(Locale('fr'), 'Français'),
 | 
					  MapEntry(Locale('fr'), 'Français'),
 | 
				
			||||||
  MapEntry(Locale('es'), 'Español'),
 | 
					  MapEntry(Locale('es'), 'Español'),
 | 
				
			||||||
  MapEntry(Locale('pl'), 'Polski'),
 | 
					  MapEntry(Locale('pl'), 'Polski'),
 | 
				
			||||||
 | 
					  MapEntry(Locale('ru'), 'Русский язык'),
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
const fallbackLocale = Locale('en');
 | 
					const fallbackLocale = Locale('en');
 | 
				
			||||||
const localeDir = 'assets/translations';
 | 
					const localeDir = 'assets/translations';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					import 'dart:ui';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import 'package:easy_localization/easy_localization.dart';
 | 
					import 'package:easy_localization/easy_localization.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:flutter/services.dart';
 | 
					import 'package:flutter/services.dart';
 | 
				
			||||||
@@ -82,20 +84,20 @@ class _AppPageState extends State<AppPage> {
 | 
				
			|||||||
            const SizedBox(
 | 
					            const SizedBox(
 | 
				
			||||||
              height: 32,
 | 
					              height: 32,
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
 | 
					            Column(
 | 
				
			||||||
 | 
					              children: [
 | 
				
			||||||
                Text(
 | 
					                Text(
 | 
				
			||||||
              tr('latestVersionX',
 | 
					                  '${tr('latestVersionX', args: [
 | 
				
			||||||
                  args: [app?.app.latestVersion ?? tr('unknown')]),
 | 
					                        app?.app.latestVersion ?? tr('unknown')
 | 
				
			||||||
              textAlign: TextAlign.center,
 | 
					                      ])}\n${tr('installedVersionX', args: [
 | 
				
			||||||
              style: Theme.of(context).textTheme.bodyLarge,
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
            Text(
 | 
					 | 
				
			||||||
              '${tr('installedVersionX', args: [
 | 
					 | 
				
			||||||
                        app?.app.installedVersion ?? tr('none')
 | 
					                        app?.app.installedVersion ?? tr('none')
 | 
				
			||||||
                      ])}${trackOnly ? ' ${tr('estimateInBrackets')}\n\n${tr('xIsTrackOnly', args: [
 | 
					                      ])}${trackOnly ? ' ${tr('estimateInBrackets')}\n\n${tr('xIsTrackOnly', args: [
 | 
				
			||||||
                          tr('app')
 | 
					                          tr('app')
 | 
				
			||||||
                        ])}' : ''}',
 | 
					                        ])}' : ''}',
 | 
				
			||||||
              textAlign: TextAlign.center,
 | 
					                  textAlign: TextAlign.end,
 | 
				
			||||||
              style: Theme.of(context).textTheme.bodyLarge,
 | 
					                  style: Theme.of(context).textTheme.bodyLarge!,
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
            if (app?.app.installedVersion != null &&
 | 
					            if (app?.app.installedVersion != null &&
 | 
				
			||||||
                !isVersionDetectionStandard)
 | 
					                !isVersionDetectionStandard)
 | 
				
			||||||
@@ -329,7 +331,8 @@ class _AppPageState extends State<AppPage> {
 | 
				
			|||||||
                try {
 | 
					                try {
 | 
				
			||||||
                  HapticFeedback.heavyImpact();
 | 
					                  HapticFeedback.heavyImpact();
 | 
				
			||||||
                  var res = await appsProvider.downloadAndInstallLatestApps(
 | 
					                  var res = await appsProvider.downloadAndInstallLatestApps(
 | 
				
			||||||
                      [app!.app.id], globalNavigatorKey.currentContext);
 | 
					                      app?.app.id != null ? [app!.app.id] : [],
 | 
				
			||||||
 | 
					                      globalNavigatorKey.currentContext);
 | 
				
			||||||
                  if (res.isNotEmpty && mounted) {
 | 
					                  if (res.isNotEmpty && mounted) {
 | 
				
			||||||
                    Navigator.of(context).pop();
 | 
					                    Navigator.of(context).pop();
 | 
				
			||||||
                  }
 | 
					                  }
 | 
				
			||||||
@@ -426,8 +429,10 @@ class _AppPageState extends State<AppPage> {
 | 
				
			|||||||
                        onPressed: app?.downloadProgress != null
 | 
					                        onPressed: app?.downloadProgress != null
 | 
				
			||||||
                            ? null
 | 
					                            ? null
 | 
				
			||||||
                            : () {
 | 
					                            : () {
 | 
				
			||||||
                                appsProvider.removeAppsWithModal(
 | 
					                                appsProvider
 | 
				
			||||||
                                    context, [app!.app]).then((value) {
 | 
					                                    .removeAppsWithModal(
 | 
				
			||||||
 | 
					                                        context, app != null ? [app.app] : [])
 | 
				
			||||||
 | 
					                                    .then((value) {
 | 
				
			||||||
                                  if (value == true) {
 | 
					                                  if (value == true) {
 | 
				
			||||||
                                    Navigator.of(context).pop();
 | 
					                                    Navigator.of(context).pop();
 | 
				
			||||||
                                  }
 | 
					                                  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -202,16 +202,18 @@ class AppsProvider with ChangeNotifier {
 | 
				
			|||||||
    // The former case should be handled (give the App its real ID), the latter is a security issue
 | 
					    // The former case should be handled (give the App its real ID), the latter is a security issue
 | 
				
			||||||
    if (app.id != newInfo.packageName) {
 | 
					    if (app.id != newInfo.packageName) {
 | 
				
			||||||
      var isTempId = SourceProvider().isTempId(app);
 | 
					      var isTempId = SourceProvider().isTempId(app);
 | 
				
			||||||
      if (apps[app.id] != null && !isTempId) {
 | 
					      if (apps[app.id] != null && !isTempId && !app.allowIdChange) {
 | 
				
			||||||
        throw IDChangedError();
 | 
					        throw IDChangedError(newInfo.packageName);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      var idChangeWasAllowed = app.allowIdChange;
 | 
				
			||||||
 | 
					      app.allowIdChange = false;
 | 
				
			||||||
      var originalAppId = app.id;
 | 
					      var originalAppId = app.id;
 | 
				
			||||||
      app.id = newInfo.packageName;
 | 
					      app.id = newInfo.packageName;
 | 
				
			||||||
      downloadedFile = downloadedFile.renameSync(
 | 
					      downloadedFile = downloadedFile.renameSync(
 | 
				
			||||||
          '${downloadedFile.parent.path}/${app.id}-${downloadUrl.hashCode}.${downloadedFile.path.split('.').last}');
 | 
					          '${downloadedFile.parent.path}/${app.id}-${downloadUrl.hashCode}.${downloadedFile.path.split('.').last}');
 | 
				
			||||||
      if (apps[originalAppId] != null) {
 | 
					      if (apps[originalAppId] != null) {
 | 
				
			||||||
        await removeApps([originalAppId]);
 | 
					        await removeApps([originalAppId]);
 | 
				
			||||||
        await saveApps([app], onlyIfExists: !isTempId);
 | 
					        await saveApps([app], onlyIfExists: !isTempId && !idChangeWasAllowed);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return downloadedFile;
 | 
					    return downloadedFile;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -163,6 +163,7 @@ class App {
 | 
				
			|||||||
  late DateTime? releaseDate;
 | 
					  late DateTime? releaseDate;
 | 
				
			||||||
  late String? changeLog;
 | 
					  late String? changeLog;
 | 
				
			||||||
  late String? overrideSource;
 | 
					  late String? overrideSource;
 | 
				
			||||||
 | 
					  bool allowIdChange = false;
 | 
				
			||||||
  App(
 | 
					  App(
 | 
				
			||||||
      this.id,
 | 
					      this.id,
 | 
				
			||||||
      this.url,
 | 
					      this.url,
 | 
				
			||||||
@@ -178,7 +179,8 @@ class App {
 | 
				
			|||||||
      {this.categories = const [],
 | 
					      {this.categories = const [],
 | 
				
			||||||
      this.releaseDate,
 | 
					      this.releaseDate,
 | 
				
			||||||
      this.changeLog,
 | 
					      this.changeLog,
 | 
				
			||||||
      this.overrideSource});
 | 
					      this.overrideSource,
 | 
				
			||||||
 | 
					      this.allowIdChange = false});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  String toString() {
 | 
					  String toString() {
 | 
				
			||||||
@@ -209,7 +211,8 @@ class App {
 | 
				
			|||||||
      categories: categories,
 | 
					      categories: categories,
 | 
				
			||||||
      changeLog: changeLog,
 | 
					      changeLog: changeLog,
 | 
				
			||||||
      releaseDate: releaseDate,
 | 
					      releaseDate: releaseDate,
 | 
				
			||||||
      overrideSource: overrideSource);
 | 
					      overrideSource: overrideSource,
 | 
				
			||||||
 | 
					      allowIdChange: allowIdChange);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  factory App.fromJson(Map<String, dynamic> json) {
 | 
					  factory App.fromJson(Map<String, dynamic> json) {
 | 
				
			||||||
    json = appJSONCompatibilityModifiers(json);
 | 
					    json = appJSONCompatibilityModifiers(json);
 | 
				
			||||||
@@ -241,7 +244,8 @@ class App {
 | 
				
			|||||||
            : DateTime.fromMicrosecondsSinceEpoch(json['releaseDate']),
 | 
					            : DateTime.fromMicrosecondsSinceEpoch(json['releaseDate']),
 | 
				
			||||||
        changeLog:
 | 
					        changeLog:
 | 
				
			||||||
            json['changeLog'] == null ? null : json['changeLog'] as String,
 | 
					            json['changeLog'] == null ? null : json['changeLog'] as String,
 | 
				
			||||||
        overrideSource: json['overrideSource']);
 | 
					        overrideSource: json['overrideSource'],
 | 
				
			||||||
 | 
					        allowIdChange: json['allowIdChange'] ?? false);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Map<String, dynamic> toJson() => {
 | 
					  Map<String, dynamic> toJson() => {
 | 
				
			||||||
@@ -259,7 +263,8 @@ class App {
 | 
				
			|||||||
        'categories': categories,
 | 
					        'categories': categories,
 | 
				
			||||||
        'releaseDate': releaseDate?.microsecondsSinceEpoch,
 | 
					        'releaseDate': releaseDate?.microsecondsSinceEpoch,
 | 
				
			||||||
        'changeLog': changeLog,
 | 
					        'changeLog': changeLog,
 | 
				
			||||||
        'overrideSource': overrideSource
 | 
					        'overrideSource': overrideSource,
 | 
				
			||||||
 | 
					        'allowIdChange': allowIdChange
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -613,7 +618,11 @@ class SourceProvider {
 | 
				
			|||||||
        categories: currentApp?.categories ?? const [],
 | 
					        categories: currentApp?.categories ?? const [],
 | 
				
			||||||
        releaseDate: apk.releaseDate,
 | 
					        releaseDate: apk.releaseDate,
 | 
				
			||||||
        changeLog: apk.changeLog,
 | 
					        changeLog: apk.changeLog,
 | 
				
			||||||
        overrideSource: overrideSource ?? currentApp?.overrideSource);
 | 
					        overrideSource: overrideSource ?? currentApp?.overrideSource,
 | 
				
			||||||
 | 
					        allowIdChange: currentApp?.allowIdChange ??
 | 
				
			||||||
 | 
					            source.appIdInferIsOptional &&
 | 
				
			||||||
 | 
					                inferAppIdIfOptional // Optional ID inferring may be incorrect - allow correction on first install
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Returns errors in [results, errors] instead of throwing them
 | 
					  // Returns errors in [results, errors] instead of throwing them
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										72
									
								
								pubspec.lock
									
									
									
									
									
								
							
							
						
						
									
										72
									
								
								pubspec.lock
									
									
									
									
									
								
							@@ -46,10 +46,10 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: args
 | 
					      name: args
 | 
				
			||||||
      sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a
 | 
					      sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.4.1"
 | 
					    version: "2.4.2"
 | 
				
			||||||
  async:
 | 
					  async:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -134,10 +134,10 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: csslib
 | 
					      name: csslib
 | 
				
			||||||
      sha256: "831883fb353c8bdc1d71979e5b342c7d88acfbc643113c14ae51e2442ea0f20f"
 | 
					      sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "0.17.3"
 | 
					    version: "1.0.0"
 | 
				
			||||||
  cupertino_icons:
 | 
					  cupertino_icons:
 | 
				
			||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -222,10 +222,10 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: file_picker
 | 
					      name: file_picker
 | 
				
			||||||
      sha256: "9d6e95ec73abbd31ec54d0e0df8a961017e165aba1395e462e5b31ea0c165daf"
 | 
					      sha256: b1729fc96627dd44012d0a901558177418818d6bd428df59dcfeb594e5f66432
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "5.3.1"
 | 
					    version: "5.3.2"
 | 
				
			||||||
  flutter:
 | 
					  flutter:
 | 
				
			||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description: flutter
 | 
					    description: flutter
 | 
				
			||||||
@@ -322,10 +322,10 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: html
 | 
					      name: html
 | 
				
			||||||
      sha256: "58e3491f7bf0b6a4ea5110c0c688877460d1a6366731155c4a4580e7ded773e8"
 | 
					      sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "0.15.3"
 | 
					    version: "0.15.4"
 | 
				
			||||||
  http:
 | 
					  http:
 | 
				
			||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -506,42 +506,42 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: path_provider_windows
 | 
					      name: path_provider_windows
 | 
				
			||||||
      sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6
 | 
					      sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.1.6"
 | 
					    version: "2.1.7"
 | 
				
			||||||
  permission_handler:
 | 
					  permission_handler:
 | 
				
			||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: permission_handler
 | 
					      name: permission_handler
 | 
				
			||||||
      sha256: "33c6a1253d1f95fd06fa74b65b7ba907ae9811f9d5c1d3150e51417d04b8d6a8"
 | 
					      sha256: "1b6b3e73f0bcbc856548bbdfb1c33084a401c4f143e220629a9055233d76c331"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "10.2.0"
 | 
					    version: "10.3.0"
 | 
				
			||||||
  permission_handler_android:
 | 
					  permission_handler_android:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: permission_handler_android
 | 
					      name: permission_handler_android
 | 
				
			||||||
      sha256: d8cc6a62ded6d0f49c6eac337e080b066ee3bce4d405bd9439a61e1f1927bfe8
 | 
					      sha256: "8f6a95ccbca13766882f95d32684d7c9bfe6c45650c32bedba948ef1c6a4ddf7"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "10.2.1"
 | 
					    version: "10.2.3"
 | 
				
			||||||
  permission_handler_apple:
 | 
					  permission_handler_apple:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: permission_handler_apple
 | 
					      name: permission_handler_apple
 | 
				
			||||||
      sha256: ee96ac32f5a8e6f80756e25b25b9f8e535816c8e6665a96b6d70681f8c4f7e85
 | 
					      sha256: "08dcb6ce628ac0b257e429944b4c652c2a4e6af725bdf12b498daa2c6b2b1edb"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "9.0.8"
 | 
					    version: "9.1.0"
 | 
				
			||||||
  permission_handler_platform_interface:
 | 
					  permission_handler_platform_interface:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: permission_handler_platform_interface
 | 
					      name: permission_handler_platform_interface
 | 
				
			||||||
      sha256: "68abbc472002b5e6dfce47fe9898c6b7d8328d58b5d2524f75e277c07a97eb84"
 | 
					      sha256: de20a5c3269229c1ae2e5a6b822f6cb59578b23e8255c93fbeebfc82116e6b11
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "3.9.0"
 | 
					    version: "3.10.0"
 | 
				
			||||||
  permission_handler_windows:
 | 
					  permission_handler_windows:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -618,10 +618,10 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: shared_preferences
 | 
					      name: shared_preferences
 | 
				
			||||||
      sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022"
 | 
					      sha256: "396f85b8afc6865182610c0a2fc470853d56499f75f7499e2a73a9f0539d23d0"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.1.1"
 | 
					    version: "2.1.2"
 | 
				
			||||||
  shared_preferences_android:
 | 
					  shared_preferences_android:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -695,10 +695,10 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: sqflite_common
 | 
					      name: sqflite_common
 | 
				
			||||||
      sha256: e77abf6ff961d69dfef41daccbb66b51e9983cdd5cb35bf30733598057401555
 | 
					      sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.4.5"
 | 
					    version: "2.4.5+1"
 | 
				
			||||||
  stack_trace:
 | 
					  stack_trace:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -775,10 +775,10 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: url_launcher_android
 | 
					      name: url_launcher_android
 | 
				
			||||||
      sha256: eed4e6a1164aa9794409325c3b707ff424d4d1c2a785e7db67f8bbda00e36e51
 | 
					      sha256: "15f5acbf0dce90146a0f5a2c4a002b1814a6303c4c5c075aa2623b2d16156f03"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "6.0.35"
 | 
					    version: "6.0.36"
 | 
				
			||||||
  url_launcher_ios:
 | 
					  url_launcher_ios:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -807,10 +807,10 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: url_launcher_platform_interface
 | 
					      name: url_launcher_platform_interface
 | 
				
			||||||
      sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370"
 | 
					      sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "2.1.2"
 | 
					    version: "2.1.3"
 | 
				
			||||||
  url_launcher_web:
 | 
					  url_launcher_web:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -847,18 +847,18 @@ packages:
 | 
				
			|||||||
    dependency: "direct main"
 | 
					    dependency: "direct main"
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: webview_flutter
 | 
					      name: webview_flutter
 | 
				
			||||||
      sha256: "5604dac1178680a34fbe4a08c7b69ec42cca6601dc300009ec9ff69bef284cc2"
 | 
					      sha256: "789d52bd789373cc1e100fb634af2127e86c99cf9abde09499743270c5de8d00"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "4.2.1"
 | 
					    version: "4.2.2"
 | 
				
			||||||
  webview_flutter_android:
 | 
					  webview_flutter_android:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: webview_flutter_android
 | 
					      name: webview_flutter_android
 | 
				
			||||||
      sha256: "57a22c86065375c1598b57224f92d6008141be0c877c64100de8bfb6f71083d8"
 | 
					      sha256: "532135f6f6b8030cd039f30eab23f340d650350e29f38e9b37d2eaad028f1018"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "3.7.1"
 | 
					    version: "3.8.0"
 | 
				
			||||||
  webview_flutter_platform_interface:
 | 
					  webview_flutter_platform_interface:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
@@ -871,26 +871,26 @@ packages:
 | 
				
			|||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: webview_flutter_wkwebview
 | 
					      name: webview_flutter_wkwebview
 | 
				
			||||||
      sha256: "6bbc6ade302b842999b27cbaa7171241c273deea8a9c73f92ceb3d811c767de2"
 | 
					      sha256: ecc9e9ea15216afc5ba3b1f14aa19414ceba526e57b19cebd970bfa91a0f4058
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "3.4.4"
 | 
					    version: "3.5.0"
 | 
				
			||||||
  win32:
 | 
					  win32:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: win32
 | 
					      name: win32
 | 
				
			||||||
      sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c"
 | 
					      sha256: "1414f27dd781737e51afa9711f2ac2ace6ab4498ee98e20863fa5505aa00c58c"
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "4.1.4"
 | 
					    version: "5.0.4"
 | 
				
			||||||
  win32_registry:
 | 
					  win32_registry:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      name: win32_registry
 | 
					      name: win32_registry
 | 
				
			||||||
      sha256: "1c52f994bdccb77103a6231ad4ea331a244dbcef5d1f37d8462f713143b0bfae"
 | 
					      sha256: e4506d60b7244251bc59df15656a3093501c37fb5af02105a944d73eb95be4c9
 | 
				
			||||||
      url: "https://pub.dev"
 | 
					      url: "https://pub.dev"
 | 
				
			||||||
    source: hosted
 | 
					    source: hosted
 | 
				
			||||||
    version: "1.1.0"
 | 
					    version: "1.1.1"
 | 
				
			||||||
  xdg_directories:
 | 
					  xdg_directories:
 | 
				
			||||||
    dependency: transitive
 | 
					    dependency: transitive
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,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
 | 
					# 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
 | 
					# 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.
 | 
					# of the product and file versions while build-number is used as the build suffix.
 | 
				
			||||||
version: 0.13.8+172 # When changing this, update the tag in main() accordingly
 | 
					version: 0.13.9+173 # When changing this, update the tag in main() accordingly
 | 
				
			||||||
 | 
					
 | 
				
			||||||
environment:
 | 
					environment:
 | 
				
			||||||
  sdk: '>=2.18.2 <3.0.0'
 | 
					  sdk: '>=2.18.2 <3.0.0'
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user