mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-31 13:33:28 +01:00 
			
		
		
		
	Merge pull request #1408 from ImranR98/dev
- Improved URL handling for F-Droid third party repos (#1399) - Fixed F-Droid repo search (#1400) + general search bugfixes - Improved APK filter for F-Droid (#1386) - Don't remove storage permission (#1391) - Jump in versionCode to fix updates in x86 versions (#1370)
This commit is contained in:
		
							
								
								
									
										2
									
								
								.flutter
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								.flutter
									
									
									
									
									
								
							 Submodule .flutter updated: 41456452f2...bae5e49bc2
									
								
							| @@ -70,8 +70,6 @@ | ||||
|     <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" /> | ||||
|     <uses-permission | ||||
|         android:name="android.permission.WRITE_EXTERNAL_STORAGE" | ||||
|         android:maxSdkVersion="29" /> | ||||
|     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" | ||||
|         tools:node="remove" /> | ||||
|         android:maxSdkVersion="29" />\ | ||||
|     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" /> | ||||
| </manifest> | ||||
| @@ -76,16 +76,7 @@ class FDroid extends AppSource { | ||||
|         'https://$host/repo/$appId', | ||||
|         standardUrl, | ||||
|         name, | ||||
|         autoSelectHighestVersionCode: | ||||
|             additionalSettings['autoSelectHighestVersionCode'] == true, | ||||
|         trySelectingSuggestedVersionCode: | ||||
|             additionalSettings['trySelectingSuggestedVersionCode'] == true, | ||||
|         filterVersionsByRegEx: | ||||
|             (additionalSettings['filterVersionsByRegEx'] as String?) | ||||
|                         ?.isNotEmpty == | ||||
|                     true | ||||
|                 ? additionalSettings['filterVersionsByRegEx'] | ||||
|                 : null); | ||||
|         additionalSettings: additionalSettings); | ||||
|     if (!hostChanged) { | ||||
|       try { | ||||
|         var res = await sourceRequest( | ||||
| @@ -166,12 +157,30 @@ class FDroid extends AppSource { | ||||
|  | ||||
|   APKDetails getAPKUrlsFromFDroidPackagesAPIResponse( | ||||
|       Response res, String apkUrlPrefix, String standardUrl, String sourceName, | ||||
|       {bool autoSelectHighestVersionCode = false, | ||||
|       bool trySelectingSuggestedVersionCode = false, | ||||
|       String? filterVersionsByRegEx}) { | ||||
|       {Map<String, dynamic> additionalSettings = const {}}) { | ||||
|     var autoSelectHighestVersionCode = | ||||
|         additionalSettings['autoSelectHighestVersionCode'] == true; | ||||
|     var trySelectingSuggestedVersionCode = | ||||
|         additionalSettings['trySelectingSuggestedVersionCode'] == true; | ||||
|     var filterVersionsByRegEx = | ||||
|         (additionalSettings['filterVersionsByRegEx'] as String?)?.isNotEmpty == | ||||
|                 true | ||||
|             ? additionalSettings['filterVersionsByRegEx'] | ||||
|             : null; | ||||
|     var apkFilterRegEx = | ||||
|         (additionalSettings['apkFilterRegEx'] as String?)?.isNotEmpty == true | ||||
|             ? additionalSettings['apkFilterRegEx'] | ||||
|             : null; | ||||
|     if (res.statusCode == 200) { | ||||
|       var response = jsonDecode(res.body); | ||||
|       List<dynamic> releases = response['packages'] ?? []; | ||||
|       if (apkFilterRegEx != null) { | ||||
|         releases = releases.where((rel) { | ||||
|           String apk = '${apkUrlPrefix}_${rel['versionCode']}.apk'; | ||||
|           return filterApks([MapEntry(apk, apk)], apkFilterRegEx, false) | ||||
|               .isNotEmpty; | ||||
|         }).toList(); | ||||
|       } | ||||
|       if (releases.isEmpty) { | ||||
|         throw NoReleasesError(); | ||||
|       } | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:html/parser.dart'; | ||||
| import 'package:http/http.dart'; | ||||
| import 'package:obtainium/components/generated_form.dart'; | ||||
| import 'package:obtainium/custom_errors.dart'; | ||||
| import 'package:obtainium/providers/source_provider.dart'; | ||||
| @@ -45,7 +46,7 @@ class FDroidRepo extends AppSource { | ||||
|   String sourceSpecificStandardizeURL(String url) { | ||||
|     var standardUri = Uri.parse(url); | ||||
|     var pathSegments = standardUri.pathSegments; | ||||
|     if (pathSegments.last == 'index.xml') { | ||||
|     if (pathSegments.isNotEmpty && pathSegments.last == 'index.xml') { | ||||
|       pathSegments.removeLast(); | ||||
|       standardUri = standardUri.replace(path: pathSegments.join('/')); | ||||
|     } | ||||
| @@ -60,7 +61,7 @@ class FDroidRepo extends AppSource { | ||||
|       throw NoReleasesError(); | ||||
|     } | ||||
|     url = removeQueryParamsFromUrl(standardizeUrl(url)); | ||||
|     var res = await sourceRequest('$url/index.xml', {}); | ||||
|     var res = await sourceRequestWithURLVariants(url, {}); | ||||
|     if (res.statusCode == 200) { | ||||
|       var body = parse(res.body); | ||||
|       Map<String, List<String>> results = {}; | ||||
| @@ -72,7 +73,11 @@ class FDroidRepo extends AppSource { | ||||
|             appId.contains(query) || | ||||
|             appName.contains(query) || | ||||
|             appDesc.contains(query)) { | ||||
|           results['$url?appId=$appId'] = [appName, appDesc]; | ||||
|           results[ | ||||
|               '${res.request!.url.toString().split('/').reversed.toList().sublist(1).reversed.join('/')}?appId=$appId'] = [ | ||||
|             appName, | ||||
|             appDesc | ||||
|           ]; | ||||
|         } | ||||
|       }); | ||||
|       return results; | ||||
| @@ -102,6 +107,26 @@ class FDroidRepo extends AppSource { | ||||
|     return app; | ||||
|   } | ||||
|  | ||||
|   Future<Response> sourceRequestWithURLVariants( | ||||
|     String url, | ||||
|     Map<String, dynamic> additionalSettings, | ||||
|   ) async { | ||||
|     var res = await sourceRequest( | ||||
|         '$url${url.endsWith('/index.xml') ? '' : '/index.xml'}', | ||||
|         additionalSettings); | ||||
|     if (res.statusCode != 200) { | ||||
|       var base = url.endsWith('/index.xml') | ||||
|           ? url.split('/').reversed.toList().sublist(1).reversed.join('/') | ||||
|           : url; | ||||
|       res = await sourceRequest('$base/repo/index.xml', additionalSettings); | ||||
|       if (res.statusCode != 200) { | ||||
|         res = await sourceRequest( | ||||
|             '$base/fdroid/repo/index.xml', additionalSettings); | ||||
|       } | ||||
|     } | ||||
|     return res; | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Future<APKDetails> getLatestAPKDetails( | ||||
|     String standardUrl, | ||||
| @@ -117,9 +142,8 @@ class FDroidRepo extends AppSource { | ||||
|     if (appIdOrName == null) { | ||||
|       throw NoReleasesError(); | ||||
|     } | ||||
|     var res = await sourceRequest( | ||||
|         '$standardUrl${standardUrl.endsWith('/index.xml') ? '' : '/index.xml'}', | ||||
|         additionalSettings); | ||||
|     var res = | ||||
|         await sourceRequestWithURLVariants(standardUrl, additionalSettings); | ||||
|     if (res.statusCode == 200) { | ||||
|       var body = parse(res.body); | ||||
|       var foundApps = body.querySelectorAll('application').where((element) { | ||||
| @@ -168,7 +192,8 @@ class FDroidRepo extends AppSource { | ||||
|         latestVersionReleases = [latestVersionReleases[0]]; | ||||
|       } | ||||
|       List<String> apkUrls = latestVersionReleases | ||||
|           .map((e) => '$standardUrl/${e.querySelector('apkname')!.innerHtml}') | ||||
|           .map((e) => | ||||
|               '${res.request!.url.toString().split('/').reversed.toList().sublist(1).reversed.join('/')}/${e.querySelector('apkname')!.innerHtml}') | ||||
|           .toList(); | ||||
|       return APKDetails(latestVersion, getApkUrlsFromUrls(apkUrls), | ||||
|           AppNames(authorName, appName), | ||||
|   | ||||
| @@ -50,10 +50,6 @@ class IzzyOnDroid extends AppSource { | ||||
|         'https://android.izzysoft.de/frepo/$appId', | ||||
|         standardUrl, | ||||
|         name, | ||||
|         autoSelectHighestVersionCode: | ||||
|             additionalSettings['autoSelectHighestVersionCode'] == true, | ||||
|         trySelectingSuggestedVersionCode: | ||||
|             additionalSettings['trySelectingSuggestedVersionCode'] == true, | ||||
|         filterVersionsByRegEx: additionalSettings['filterVersionsByRegEx']); | ||||
|         additionalSettings: additionalSettings); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -163,7 +163,7 @@ class AddAppPageState extends State<AddAppPage> { | ||||
|           app = await sourceProvider.getApp( | ||||
|               pickedSource!, userInput.trim(), additionalSettings, | ||||
|               trackOnlyOverride: trackOnly, | ||||
|               overrideSource: pickedSourceOverride, | ||||
|               sourceIsOverriden: pickedSourceOverride != null, | ||||
|               inferAppIdIfOptional: inferAppIdIfOptional); | ||||
|           // Only download the APK here if you need to for the package ID | ||||
|           if (isTempId(app) && app.additionalSettings['trackOnly'] != true) { | ||||
|   | ||||
| @@ -213,7 +213,7 @@ class _ImportExportPageState extends State<ImportExportPage> { | ||||
|           setState(() { | ||||
|             importInProgress = true; | ||||
|           }); | ||||
|           if (values['url'] != source.hosts[0]) { | ||||
|           if (source.hosts.isEmpty || values['url'] != source.hosts[0]) { | ||||
|             source = sourceProvider.getSource(values['url'], | ||||
|                 overrideSource: source.runtimeType.toString()); | ||||
|           } | ||||
|   | ||||
| @@ -819,7 +819,7 @@ class SourceProvider { | ||||
|       AppSource source, String url, Map<String, dynamic> additionalSettings, | ||||
|       {App? currentApp, | ||||
|       bool trackOnlyOverride = false, | ||||
|       String? overrideSource, | ||||
|       bool sourceIsOverriden = false, | ||||
|       bool inferAppIdIfOptional = false}) async { | ||||
|     if (trackOnlyOverride || source.enforceTrackOnly) { | ||||
|       additionalSettings['trackOnly'] = true; | ||||
| @@ -887,7 +887,9 @@ class SourceProvider { | ||||
|         categories: currentApp?.categories ?? const [], | ||||
|         releaseDate: apk.releaseDate, | ||||
|         changeLog: apk.changeLog, | ||||
|         overrideSource: overrideSource ?? currentApp?.overrideSource, | ||||
|         overrideSource: sourceIsOverriden | ||||
|             ? source.runtimeType.toString() | ||||
|             : currentApp?.overrideSource, | ||||
|         allowIdChange: currentApp?.allowIdChange ?? | ||||
|             trackOnly || | ||||
|                 (source.appIdInferIsOptional && | ||||
| @@ -911,6 +913,7 @@ class SourceProvider { | ||||
|         apps.add(await getApp( | ||||
|             source, | ||||
|             url, | ||||
|             sourceIsOverriden: sourceOverride != null, | ||||
|             getDefaultValuesFromFormItems( | ||||
|                 source.combinedAppSpecificSettingFormItems))); | ||||
|       } catch (e) { | ||||
|   | ||||
							
								
								
									
										126
									
								
								pubspec.lock
									
									
									
									
									
								
							
							
						
						
									
										126
									
								
								pubspec.lock
									
									
									
									
									
								
							| @@ -150,10 +150,10 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: cross_file | ||||
|       sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e | ||||
|       sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.3.3+8" | ||||
|     version: "0.3.3+7" | ||||
|   crypto: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
| @@ -214,10 +214,10 @@ packages: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: easy_localization | ||||
|       sha256: de63e3b422adfc97f256cbb3f8cf12739b6a4993d390f3cadb3f51837afaefe5 | ||||
|       sha256: "9c86754b22aaa3e74e471635b25b33729f958dd6fb83df0ad6612948a7b231af" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.0.3" | ||||
|     version: "3.0.4" | ||||
|   easy_logger: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -238,10 +238,10 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: ffi | ||||
|       sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" | ||||
|       sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.0" | ||||
|     version: "2.1.2" | ||||
|   file: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -336,10 +336,10 @@ packages: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: flutter_markdown | ||||
|       sha256: "30088ce826b5b9cfbf9e8bece34c716c8a59fa54461dcae1e4ac01a94639e762" | ||||
|       sha256: "21b085a1c185e46701373866144ced56cfb7a0c33f63c916bb8fe2d0c1491278" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.6.18+3" | ||||
|     version: "0.6.19" | ||||
|   flutter_plugin_android_lifecycle: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -394,10 +394,10 @@ packages: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: http | ||||
|       sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba | ||||
|       sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.2.0" | ||||
|     version: "1.2.1" | ||||
|   http_parser: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -410,10 +410,10 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: image | ||||
|       sha256: "49a0d4b0c12402853d3f227fe7c315601b238d126aa4caa5dbb2dcf99421aa4a" | ||||
|       sha256: "4c68bfd5ae83e700b5204c1e74451e7bf3cf750e6843c6e158289cf56bda018e" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.1.6" | ||||
|     version: "4.1.7" | ||||
|   intl: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -438,6 +438,30 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.8.1" | ||||
|   leak_tracker: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: leak_tracker | ||||
|       sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "10.0.0" | ||||
|   leak_tracker_flutter_testing: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: leak_tracker_flutter_testing | ||||
|       sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.1" | ||||
|   leak_tracker_testing: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: leak_tracker_testing | ||||
|       sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.1" | ||||
|   lints: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -458,26 +482,26 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: matcher | ||||
|       sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" | ||||
|       sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.12.16" | ||||
|     version: "0.12.16+1" | ||||
|   material_color_utilities: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: material_color_utilities | ||||
|       sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" | ||||
|       sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.5.0" | ||||
|     version: "0.8.0" | ||||
|   meta: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: meta | ||||
|       sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e | ||||
|       sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.10.0" | ||||
|     version: "1.11.0" | ||||
|   mime: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -506,10 +530,10 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: path | ||||
|       sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" | ||||
|       sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.8.3" | ||||
|     version: "1.9.0" | ||||
|   path_provider: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
| @@ -562,26 +586,26 @@ packages: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: permission_handler | ||||
|       sha256: "45ff3fbcb99040fde55c528d5e3e6ca29171298a85436274d49c6201002087d6" | ||||
|       sha256: "74e962b7fad7ff75959161bb2c0ad8fe7f2568ee82621c9c2660b751146bfe44" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "11.2.0" | ||||
|     version: "11.3.0" | ||||
|   permission_handler_android: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: permission_handler_android | ||||
|       sha256: "758284a0976772f9c744d6384fc5dc4834aa61e3f7aa40492927f244767374eb" | ||||
|       sha256: "1acac6bae58144b442f11e66621c062aead9c99841093c38f5bcdcc24c1c3474" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "12.0.3" | ||||
|     version: "12.0.5" | ||||
|   permission_handler_apple: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: permission_handler_apple | ||||
|       sha256: c6bf440f80acd2a873d3d91a699e4cc770f86e7e6b576dda98759e8b92b39830 | ||||
|       sha256: bdafc6db74253abb63907f4e357302e6bb786ab41465e8635f362ee71fd8707b | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "9.3.0" | ||||
|     version: "9.4.0" | ||||
|   permission_handler_html: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -594,10 +618,10 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: permission_handler_platform_interface | ||||
|       sha256: "5c43148f2bfb6d14c5a8162c0a712afe891f2d847f35fcff29c406b37da43c3c" | ||||
|       sha256: "23dfba8447c076ab5be3dee9ceb66aad345c4a648f0cac292c77b1eb0e800b78" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.1.0" | ||||
|     version: "4.2.0" | ||||
|   permission_handler_windows: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -706,10 +730,10 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shared_preferences_web | ||||
|       sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" | ||||
|       sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.2.2" | ||||
|     version: "2.2.1" | ||||
|   shared_preferences_windows: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -722,10 +746,10 @@ packages: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: shared_storage | ||||
|       sha256: "7c65a9d64f0f5521256be974cfd74010af12196657cec9f9fb7b03b2f11bcaf6" | ||||
|       sha256: cf20428d06af065311b71e09cbfbbfe431e979a3bf9180001c1952129b7c708f | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.8.0" | ||||
|     version: "0.8.1" | ||||
|   sky_engine: | ||||
|     dependency: transitive | ||||
|     description: flutter | ||||
| @@ -839,10 +863,10 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: url_launcher_android | ||||
|       sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f" | ||||
|       sha256: d4ed0711849dd8e33eb2dd69c25db0d0d3fdc37e0a62e629fe32f57a22db2745 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.2.2" | ||||
|     version: "6.3.0" | ||||
|   url_launcher_ios: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -871,18 +895,18 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: url_launcher_platform_interface | ||||
|       sha256: a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f | ||||
|       sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.3.1" | ||||
|     version: "2.3.2" | ||||
|   url_launcher_web: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: url_launcher_web | ||||
|       sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b | ||||
|       sha256: "7fd2f55fe86cea2897b963e864dc01a7eb0719ecc65fcef4c1cc3d686d718bb2" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.2.3" | ||||
|     version: "2.2.0" | ||||
|   url_launcher_windows: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -907,30 +931,38 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.4" | ||||
|   vm_service: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: vm_service | ||||
|       sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "13.0.0" | ||||
|   web: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: web | ||||
|       sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 | ||||
|       sha256: "1d9158c616048c38f712a6646e317a3426da10e884447626167240d45209cbad" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.3.0" | ||||
|     version: "0.5.0" | ||||
|   webview_flutter: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: webview_flutter | ||||
|       sha256: d81b68e88cc353e546afb93fb38958e3717282c5ac6e5d3be4a4aef9fc3c1413 | ||||
|       sha256: "25e1b6e839e8cbfbd708abc6f85ed09d1727e24e08e08c6b8590d7c65c9a8932" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.5.0" | ||||
|     version: "4.7.0" | ||||
|   webview_flutter_android: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: webview_flutter_android | ||||
|       sha256: "4ea3c4e1b8ed590162b15b8a61b41b1ef3ff179a314627c16ce40c086d94b8af" | ||||
|       sha256: "3e5f4e9d818086b0d01a66fb1ff9cc72ab0cc58c71980e3d3661c5685ea0efb0" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.14.0" | ||||
|     version: "3.15.0" | ||||
|   webview_flutter_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -943,10 +975,10 @@ packages: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: webview_flutter_wkwebview | ||||
|       sha256: b99ca8d8bae9c6b43d568218691aa537fb0aeae1d7d34eadf112a6aa36d26506 | ||||
|       sha256: "9bf168bccdf179ce90450b5f37e36fe263f591c9338828d6bf09b6f8d0f57f86" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.11.0" | ||||
|     version: "3.12.0" | ||||
|   win32: | ||||
|     dependency: transitive | ||||
|     description: | ||||
| @@ -988,5 +1020,5 @@ packages: | ||||
|     source: hosted | ||||
|     version: "3.1.2" | ||||
| sdks: | ||||
|   dart: ">=3.2.3 <4.0.0" | ||||
|   dart: ">=3.3.0 <4.0.0" | ||||
|   flutter: ">=3.16.6" | ||||
|   | ||||
| @@ -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 | ||||
| # 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: 1.0.2+252 # When changing this, update the tag in main() accordingly | ||||
| version: 1.0.3+2253 # When changing this, update the tag in main() accordingly | ||||
|  | ||||
| environment: | ||||
|   sdk: '>=3.0.0 <4.0.0' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user