diff --git a/packages/smooth_app/lib/pages/product/add_new_product_page.dart b/packages/smooth_app/lib/pages/product/add_new_product_page.dart index 4a037be76f1..5e225b5e3ca 100644 --- a/packages/smooth_app/lib/pages/product/add_new_product_page.dart +++ b/packages/smooth_app/lib/pages/product/add_new_product_page.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_animation_progress_bar/flutter_animation_progress_bar.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:matomo_tracker/matomo_tracker.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; import 'package:provider/provider.dart'; @@ -12,17 +11,13 @@ import 'package:smooth_app/data_models/product_list.dart'; import 'package:smooth_app/data_models/up_to_date_mixin.dart'; import 'package:smooth_app/database/dao_product_list.dart'; import 'package:smooth_app/database/local_database.dart'; -import 'package:smooth_app/generic_lib/buttons/smooth_simple_button.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/dialogs/smooth_alert_dialog.dart'; import 'package:smooth_app/generic_lib/duration_constants.dart'; -import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; import 'package:smooth_app/helpers/analytics_helper.dart'; import 'package:smooth_app/helpers/image_field_extension.dart'; import 'package:smooth_app/helpers/product_cards_helper.dart'; -import 'package:smooth_app/helpers/user_management_helper.dart'; import 'package:smooth_app/pages/image_crop_page.dart'; -import 'package:smooth_app/pages/navigator/app_navigator.dart'; import 'package:smooth_app/pages/preferences/user_preferences_widgets.dart'; import 'package:smooth_app/pages/product/add_new_product_helper.dart'; import 'package:smooth_app/pages/product/common/product_dialog_helper.dart'; @@ -41,9 +36,11 @@ class AddNewProductPage extends StatefulWidget { events = const { EditProductAction.openPage: AnalyticsEvent.openNewProductPage, EditProductAction.leaveEmpty: AnalyticsEvent.closeEmptyNewProductPage, - EditProductAction.ingredients: AnalyticsEvent.ingredientsNewProductPage, + EditProductAction.ingredients: + AnalyticsEvent.ingredientsNewProductPage, EditProductAction.category: AnalyticsEvent.categoriesNewProductPage, - EditProductAction.nutritionFacts: AnalyticsEvent.nutritionNewProductPage, + EditProductAction.nutritionFacts: + AnalyticsEvent.nutritionNewProductPage, }, displayPictures = true, displayMisc = true, @@ -53,11 +50,16 @@ class AddNewProductPage extends StatefulWidget { this.product, { required this.isLoggedInMandatory, }) : events = const { - EditProductAction.openPage: AnalyticsEvent.openFastTrackProductEditPage, - EditProductAction.leaveEmpty: AnalyticsEvent.closeEmptyFastTrackProductPage, - EditProductAction.ingredients: AnalyticsEvent.ingredientsFastTrackProductPage, - EditProductAction.category: AnalyticsEvent.categoriesFastTrackProductPage, - EditProductAction.nutritionFacts: AnalyticsEvent.nutritionFastTrackProductPage, + EditProductAction.openPage: + AnalyticsEvent.openFastTrackProductEditPage, + EditProductAction.leaveEmpty: + AnalyticsEvent.closeEmptyFastTrackProductPage, + EditProductAction.ingredients: + AnalyticsEvent.ingredientsFastTrackProductPage, + EditProductAction.category: + AnalyticsEvent.categoriesFastTrackProductPage, + EditProductAction.nutritionFacts: + AnalyticsEvent.nutritionFastTrackProductPage, }, displayPictures = false, displayMisc = false; @@ -72,7 +74,8 @@ class AddNewProductPage extends StatefulWidget { State createState() => _AddNewProductPageState(); } -class _AddNewProductPageState extends State with TraceableClientMixin, UpToDateMixin { +class _AddNewProductPageState extends State + with TraceableClientMixin, UpToDateMixin { /// Count of "other" pictures uploaded. int _otherCount = 0; int _totalPages = 0; @@ -85,10 +88,14 @@ class _AddNewProductPageState extends State with TraceableCli final ProductList _history = ProductList.history(); final ProductFieldEditor _packagingEditor = ProductFieldPackagingEditor(); - final ProductFieldEditor _ingredientsEditor = ProductFieldOcrIngredientEditor(); - final ProductFieldEditor _originEditor = ProductFieldSimpleEditor(SimpleInputPageOriginHelper()); - final ProductFieldEditor _categoryEditor = ProductFieldSimpleEditor(SimpleInputPageCategoryHelper()); - final ProductFieldEditor _labelEditor = ProductFieldSimpleEditor(SimpleInputPageLabelHelper()); + final ProductFieldEditor _ingredientsEditor = + ProductFieldOcrIngredientEditor(); + final ProductFieldEditor _originEditor = + ProductFieldSimpleEditor(SimpleInputPageOriginHelper()); + final ProductFieldEditor _categoryEditor = + ProductFieldSimpleEditor(SimpleInputPageCategoryHelper()); + final ProductFieldEditor _labelEditor = + ProductFieldSimpleEditor(SimpleInputPageLabelHelper()); final ProductFieldEditor _detailsEditor = ProductFieldDetailsEditor(); final ProductFieldEditor _nutritionEditor = ProductFieldNutritionEditor(); late final List _editors; @@ -139,7 +146,8 @@ class _AddNewProductPageState extends State with TraceableCli AnalyticsProductTracker( analyticsEvent: AnalyticsEvent.imagesNewProductPage, barcode: barcode, - check: () => _otherCount > 0 || _helper.isOneMainImagePopulated(upToDateProduct), + check: () => + _otherCount > 0 || _helper.isOneMainImagePopulated(upToDateProduct), ), ]; _daoProductList = DaoProductList(localDatabase); @@ -147,7 +155,8 @@ class _AddNewProductPageState extends State with TraceableCli widget.events[EditProductAction.openPage]!, barcode: barcode, ); - _totalPages = 3 + (widget.displayMisc ? 1 : 0) + (widget.displayPictures ? 1 : 0); + _totalPages = + 3 + (widget.displayMisc ? 1 : 0) + (widget.displayPictures ? 1 : 0); _progress = 1 / _totalPages; _pageController.addListener(() { @@ -215,7 +224,10 @@ class _AddNewProductPageState extends State with TraceableCli Container( decoration: BoxDecoration( gradient: LinearGradient( - colors: [_colorScheme.inversePrimary, _colorScheme.secondary], + colors: [ + _colorScheme.inversePrimary, + _colorScheme.secondary + ], ), ), child: FAProgressBar( @@ -232,7 +244,8 @@ class _AddNewProductPageState extends State with TraceableCli child: PageView( controller: _pageController, children: [ - if (widget.displayPictures) _buildCard(_getImageRows(context)), + if (widget.displayPictures) + _buildCard(_getImageRows(context)), _buildCard(_getNutriscoreRows(context)), _buildCard(_getEcoscoreRows(context)), _buildCard(_getNovaRows(context)), @@ -276,7 +289,8 @@ class _AddNewProductPageState extends State with TraceableCli } } if (widget.displayPictures) { - return _helper.isOneMainImagePopulated(upToDateProduct) || _otherCount > 0; + return _helper.isOneMainImagePopulated(upToDateProduct) || + _otherCount > 0; } return false; } @@ -294,7 +308,8 @@ class _AddNewProductPageState extends State with TraceableCli ), ); - Attribute? _getAttribute(final String tag) => upToDateProduct.getAttributes([tag])[tag]; + Attribute? _getAttribute(final String tag) => + upToDateProduct.getAttributes([tag])[tag]; Widget _backButton() { return Container( @@ -308,7 +323,8 @@ class _AddNewProductPageState extends State with TraceableCli height: 20.0, child: IconButton( onPressed: () => _onWillPop().then( - (bool leaveThePage) => leaveThePage ? Navigator.of(context).pop() : null, + (bool leaveThePage) => + leaveThePage ? Navigator.of(context).pop() : null, ), alignment: Alignment.center, padding: EdgeInsets.zero, @@ -331,7 +347,8 @@ class _AddNewProductPageState extends State with TraceableCli ), onPressed: () { _onWillPop().then( - (bool leaveThePage) => leaveThePage ? Navigator.of(context).pop() : null, + (bool leaveThePage) => + leaveThePage ? Navigator.of(context).pop() : null, ); }, child: Text( @@ -359,7 +376,9 @@ class _AddNewProductPageState extends State with TraceableCli ); }, child: Text( - _isLastPage ? AppLocalizations.of(context).finish : AppLocalizations.of(context).next_label, + _isLastPage + ? AppLocalizations.of(context).finish + : AppLocalizations.of(context).next_label, style: const TextStyle( color: Colors.white, fontSize: 20.0, @@ -498,7 +517,8 @@ class _AddNewProductPageState extends State with TraceableCli ), Expanded( child: AddNewProductTitle( - attribute?.descriptionShort ?? appLocalizations.new_product_desc_nova_unknown, + attribute?.descriptionShort ?? + appLocalizations.new_product_desc_nova_unknown, maxLines: 5, ), ) @@ -515,7 +535,8 @@ class _AddNewProductPageState extends State with TraceableCli ); rows.add(const SizedBox(height: 15.0)); rows.add( - AddNewProductSubTitle(appLocalizations.new_product_title_pictures_details), + AddNewProductSubTitle( + appLocalizations.new_product_title_pictures_details), ); // Main 4 images first. @@ -548,7 +569,9 @@ class _AddNewProductPageState extends State with TraceableCli }) => AddNewProductButton( ImageField.OTHER.getAddPhotoButtonText(AppLocalizations.of(context)), - done ? AddNewProductButton.doneIconData : AddNewProductButton.cameraIconData, + done + ? AddNewProductButton.doneIconData + : AddNewProductButton.cameraIconData, () async { final File? finalPhoto = await confirmAndUploadNewPicture( context, @@ -572,8 +595,11 @@ class _AddNewProductPageState extends State with TraceableCli ) { final bool done = _helper.isMainImagePopulated(productImageData, barcode); return AddNewProductButton( - productImageData.imageField.getAddPhotoButtonText(AppLocalizations.of(context)), - done ? AddNewProductButton.doneIconData : AddNewProductButton.cameraIconData, + productImageData.imageField + .getAddPhotoButtonText(AppLocalizations.of(context)), + done + ? AddNewProductButton.doneIconData + : AddNewProductButton.cameraIconData, () async => Navigator.push( context, MaterialPageRoute( @@ -589,7 +615,8 @@ class _AddNewProductPageState extends State with TraceableCli ); } - Widget _buildCategoriesButton(final BuildContext context) => AddNewProductEditorButton( + Widget _buildCategoriesButton(final BuildContext context) => + AddNewProductEditorButton( upToDateProduct, _categoryEditor, forceIconData: Icons.filter_1, @@ -619,89 +646,4 @@ class _AddNewProductPageState extends State with TraceableCli disabled: disabled, isLoggedInMandatory: widget.isLoggedInMandatory, ); - - Widget _buildDoneCard(final BuildContext context, - {required final VoidCallback onDoneClick}) { - final AppLocalizations localizations = AppLocalizations.of(context); - final bool isDark = Theme.of(context).brightness == Brightness.dark; - - return SizedBox( - width: double.infinity, - child: SmoothCard( - clipBehavior: Clip.antiAliasWithSaveLayer, - color: Theme.of(context).colorScheme.secondary, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.all(SMALL_SPACE), - child: Text( - _createDoneMessage(localizations), - style: Theme.of(context).textTheme.displaySmall, - ), - ), - Row( - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets.all(SMALL_SPACE), - child: SmoothSimpleButton( - onPressed: onDoneClick, - buttonColor: Colors.green[700], - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Flexible( - child: Text( - localizations.new_product_done_button_label), - ), - const SizedBox(width: SMALL_SPACE), - const Icon(Icons.arrow_forward), - ], - ), - ), - ), - ), - const SizedBox(height: MEDIUM_SPACE), - Stack( - alignment: Alignment.bottomRight, - children: [ - Align( - alignment: Alignment.topLeft, - widthFactor: 0.8, - heightFactor: 0.8, - child: SvgPicture.asset( - isDark - ? 'assets/product/product_completed_graphic_dark.svg' - : 'assets/product/product_completed_graphic_light.svg', - width: 70, - ), - ), - ], - ), - ], - ), - ], - ), - ), - ); - } -} - -String _createDoneMessage(AppLocalizations localizations) { - final String? name = _getRegisteredUserName(); - if (name == null) { - return localizations.new_product_done_msg_no_user; - } else { - return localizations.new_product_done_msg(name); - } -} - -String? _getRegisteredUserName() { - final String? userId = OpenFoodAPIConfiguration.globalUser?.userId; - if (userId == null || userId.isEmail) { - return null; - } else { - return userId; - } } diff --git a/packages/smooth_app/pubspec.lock b/packages/smooth_app/pubspec.lock index 2221d44e628..d1a0f0ac2b1 100644 --- a/packages/smooth_app/pubspec.lock +++ b/packages/smooth_app/pubspec.lock @@ -57,10 +57,10 @@ packages: dependency: transitive description: name: archive - sha256: "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03" + sha256: "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b" url: "https://pub.dev" source: hosted - version: "3.4.6" + version: "3.4.9" args: dependency: transitive description: @@ -97,10 +97,10 @@ packages: dependency: transitive description: name: audioplayers_android - sha256: fb01b9481f431fe04ac60f1f97ce8158383f2dc754558820592f795d81ca9d53 + sha256: b00e1a0e11365d88576320ec2d8c192bc21f1afb6c0e5995d1c57ae63156acb5 url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.0.3" audioplayers_darwin: dependency: transitive description: @@ -193,10 +193,10 @@ packages: dependency: transitive description: name: built_value - sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166" + sha256: "723b4021e903217dfc445ec4cf5b42e27975aece1fc4ebbc1ca6329c2d9fb54e" url: "https://pub.dev" source: hosted - version: "8.6.1" + version: "8.7.0" camera: dependency: "direct main" description: @@ -209,34 +209,34 @@ packages: dependency: transitive description: name: camera_android - sha256: cac448df2567b35e2bd70b8c66368fcba4923f88bc898723516c2ce553765db6 + sha256: "58463140f1b39591b8e2155861b436abad4ceb48160058be8374164ff0309ef3" url: "https://pub.dev" source: hosted - version: "0.10.8+4" + version: "0.10.8+13" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: "1a416e452b30955b392f4efbf23291d3f2ba3660a85e1628859eb62d2a2bab26" + sha256: "3b6d9f550cfd658c71f34a99509528501e5e5d4fa79f11e3a4d6ef380d8e0254" url: "https://pub.dev" source: hosted - version: "0.9.13+2" + version: "0.9.13+7" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: "60fa0bb62a4f3bf3a7c413e31e4cd01b69c779ccc8e4668904a24581b86c316b" + sha256: "86fd4fc597c6e455265ddb5884feb352d0171ad14b9cdf3aba30da59b25738c4" url: "https://pub.dev" source: hosted - version: "2.5.1" + version: "2.6.0" camera_web: dependency: transitive description: name: camera_web - sha256: bcbd775fb3a9d51cc3ece899d54ad66f6306410556bac5759f78e13f9228841f + sha256: d4c2c571c7af04f8b10702ca16bb9ed2a26e64534171e8f75c9349b2c004d8f1 url: "https://pub.dev" source: hosted - version: "0.3.1+4" + version: "0.3.2+3" carousel_slider: dependency: "direct main" description: @@ -281,10 +281,10 @@ packages: dependency: transitive description: name: code_builder - sha256: "4ad01d6e56db961d29661561effde45e519939fdaeb46c351275b182eac70189" + sha256: "1be9be30396d7e4c0db42c35ea6ccd7cc6a1e19916b5dc64d6ac216b5544d677" url: "https://pub.dev" source: hosted - version: "4.5.0" + version: "4.7.0" collection: dependency: "direct main" description: @@ -329,10 +329,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + sha256: "445db18de832dba8d851e287aff8ccf169bed30d2e94243cb54c7d2f1ed2142c" url: "https://pub.dev" source: hosted - version: "0.3.3+4" + version: "0.3.3+6" crypto: dependency: transitive description: @@ -455,10 +455,10 @@ packages: dependency: transitive description: name: ffi - sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" file: dependency: transitive description: @@ -471,34 +471,34 @@ packages: dependency: transitive description: name: file_selector_linux - sha256: "770eb1ab057b5ae4326d1c24cc57710758b9a46026349d021d6311bd27580046" + sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" url: "https://pub.dev" source: hosted - version: "0.9.2" + version: "0.9.2+1" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: "4ada532862917bf16e3adb3891fe3a5917a58bae03293e497082203a80909412" + sha256: b15c3da8bd4908b9918111fa486903f5808e388b8d1c559949f584725a6594d6 url: "https://pub.dev" source: hosted - version: "0.9.3+1" + version: "0.9.3+3" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c" + sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.6.1" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "1372760c6b389842b77156203308940558a2817360154084368608413835fc26" + sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 url: "https://pub.dev" source: hosted - version: "0.9.3" + version: "0.9.3+1" fimber: dependency: "direct main" description: @@ -569,10 +569,10 @@ packages: dependency: transitive description: name: flutter_icmp_ping - sha256: a06c2255a857c8f9d1b0a68f546b113557e48e7a543f91e38bd66aeab296f3a6 + sha256: de9633cf65a8c733fae29d08a35d3d4b343620cd1d13e1bfa88eccf56696d896 url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" flutter_image_compress: dependency: "direct main" description: @@ -585,26 +585,26 @@ packages: dependency: transitive description: name: flutter_image_compress_common - sha256: "8e7299afe109dc4b97fda34bf0f4967cc1fc10bc8050c374d449cab262d095b3" + sha256: "7cad12802628706655920089cfe9ee1d1098300e7f39a079eb160458bbc47652" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.3" flutter_image_compress_platform_interface: dependency: transitive description: name: flutter_image_compress_platform_interface - sha256: "3c7e86da7540b1adfa919b461885a41a018d4a26544d0fcbeaa769f6542e603d" + sha256: eb4f055138b29b04498ebcb6d569aaaee34b64d75fb74ea0d40f9790bf47ee9d url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.3" flutter_image_compress_web: dependency: transitive description: name: flutter_image_compress_web - sha256: e879189dc7f246dcf8f06c07ee849231341508bf51e8ed7d5dcbe778ddde0e81 + sha256: da41cc3859f19d11c7d10be615f6a9dcf0907e7daffde7442bf4cc2486663660 url: "https://pub.dev" source: hosted - version: "0.1.3+1" + version: "0.1.3+2" flutter_launcher_icons: dependency: "direct dev" description: @@ -646,10 +646,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360" + sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.0.17" flutter_secure_storage: dependency: "direct main" description: @@ -662,42 +662,42 @@ packages: dependency: transitive description: name: flutter_secure_storage_linux - sha256: "0912ae29a572230ad52d8a4697e5518d7f0f429052fd51df7e5a7952c7efe2a3" + sha256: "3d5032e314774ee0e1a7d0a9f5e2793486f0dff2dd9ef5a23f4e3fb2a0ae6a9e" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.2.0" flutter_secure_storage_macos: dependency: transitive description: name: flutter_secure_storage_macos - sha256: "083add01847fc1c80a07a08e1ed6927e9acd9618a35e330239d4422cd2a58c50" + sha256: bd33935b4b628abd0b86c8ca20655c5b36275c3a3f5194769a7b3f37c905369c url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.0.1" flutter_secure_storage_platform_interface: dependency: transitive description: name: flutter_secure_storage_platform_interface - sha256: b3773190e385a3c8a382007893d678ae95462b3c2279e987b55d140d3b0cb81b + sha256: "0d4d3a5dd4db28c96ae414d7ba3b8422fd735a8255642774803b2532c9a61d7e" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.2" flutter_secure_storage_web: dependency: transitive description: name: flutter_secure_storage_web - sha256: "42938e70d4b872e856e678c423cc0e9065d7d294f45bc41fc1981a4eb4beaffe" + sha256: "30f84f102df9dcdaa2241866a958c2ec976902ebdaa8883fbfe525f1f2f3cf20" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" flutter_secure_storage_windows: dependency: transitive description: name: flutter_secure_storage_windows - sha256: fc2910ec9b28d60598216c29ea763b3a96c401f0ce1d13cdf69ccb0e5c93c3ee + sha256: "38f9501c7cb6f38961ef0e1eacacee2b2d4715c63cc83fe56449c4d3d0b47255" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.1" flutter_svg: dependency: "direct main" description: @@ -837,58 +837,58 @@ packages: dependency: transitive description: name: image_picker_android - sha256: d2bab152deb2547ea6f53d82ebca9b7e77386bb706e5789e815d37e08ea475bb + sha256: d6a6e78821086b0b737009b09363018309bbc6de3fd88cc5c26bc2bb44a4957f url: "https://pub.dev" source: hosted - version: "0.8.7+3" + version: "0.8.8+2" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0" + sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "3.0.1" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: b3e2f21feb28b24dd73a35d7ad6e83f568337c70afab5eabac876e23803f264b + sha256: "76ec722aeea419d03aa915c2c96bf5b47214b053899088c9abb4086ceecf97a7" url: "https://pub.dev" source: hosted - version: "0.8.8" + version: "0.8.8+4" image_picker_linux: dependency: transitive description: name: image_picker_linux - sha256: "02cbc21fe1706b97942b575966e5fbbeaac535e76deef70d3a242e4afb857831" + sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" url: "https://pub.dev" source: hosted - version: "0.2.1" + version: "0.2.1+1" image_picker_macos: dependency: transitive description: name: image_picker_macos - sha256: cee2aa86c56780c13af2c77b5f2f72973464db204569e1ba2dd744459a065af4 + sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" url: "https://pub.dev" source: hosted - version: "0.2.1" + version: "0.2.1+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "7c7b96bb9413a9c28229e717e6fd1e3edd1cc5569c1778fcca060ecf729b65ee" + sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514 url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "2.9.1" image_picker_windows: dependency: transitive description: name: image_picker_windows - sha256: c3066601ea42113922232c7b7b3330a2d86f029f685bba99d82c30e799914952 + sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" url: "https://pub.dev" source: hosted - version: "0.2.1" + version: "0.2.1+1" in_app_review: dependency: transitive description: @@ -901,10 +901,10 @@ packages: dependency: transitive description: name: in_app_review_platform_interface - sha256: b12ec9aaf6b34d3a72aa95895eb252b381896246bdad4ef378d444affe8410ef + sha256: fed2c755f2125caa9ae10495a3c163aa7fab5af3585a9c62ef4a6920c5b45f10 url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.0.5" integration_test: dependency: "direct dev" description: flutter @@ -1139,26 +1139,26 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" + sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72 url: "https://pub.dev" source: hosted - version: "2.0.27" + version: "2.2.1" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "916731ccbdce44d545414dd9961f26ba5fbaa74bcbb55237d8e65a623a8c7297" + sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" url: "https://pub.dev" source: hosted - version: "2.2.4" + version: "2.3.1" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57 + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.1.11" + version: "2.2.1" path_provider_platform_interface: dependency: "direct dev" description: @@ -1171,10 +1171,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.2.1" percent_indicator: dependency: "direct main" description: @@ -1195,10 +1195,10 @@ packages: dependency: transitive description: name: permission_handler_android - sha256: c0c9754479a4c4b1c1f3862ddc11930c9b3f03bef2816bb4ea6eed1e13551d6f + sha256: "59c6322171c29df93a22d150ad95f3aa19ed86542eaec409ab2691b8f35f9a47" url: "https://pub.dev" source: hosted - version: "10.3.2" + version: "10.3.6" permission_handler_apple: dependency: transitive description: @@ -1211,10 +1211,10 @@ packages: dependency: transitive description: name: permission_handler_platform_interface - sha256: "7c6b1500385dd1d2ca61bb89e2488ca178e274a69144d26bbd65e33eae7c02a9" + sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4" url: "https://pub.dev" source: hosted - version: "3.11.3" + version: "3.12.0" permission_handler_windows: dependency: transitive description: @@ -1408,10 +1408,10 @@ packages: dependency: transitive description: name: share_plus_platform_interface - sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981" + sha256: df08bc3a07d01f5ea47b45d03ffcba1fa9cd5370fb44b3f38c70e42cced0f956 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.3.1" shared_preferences: dependency: "direct main" description: @@ -1424,50 +1424,50 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076 + sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4 + sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.4" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1" + sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1" + sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a" + sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d + sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" shimmer: dependency: "direct main" description: @@ -1509,10 +1509,10 @@ packages: dependency: transitive description: name: sqflite_common - sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f" + sha256: "8ed044102f3135add97be8653662052838859f5400075ef227f8ad72ae320803" url: "https://pub.dev" source: hosted - version: "2.4.5+1" + version: "2.5.0+1" stack_trace: dependency: transitive description: @@ -1621,58 +1621,58 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "15f5acbf0dce90146a0f5a2c4a002b1814a6303c4c5c075aa2623b2d16156f03" + sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def" url: "https://pub.dev" source: hosted - version: "6.0.36" + version: "6.2.0" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + sha256: "4ac97281cf60e2e8c5cc703b2b28528f9b50c8f7cebc71df6bdf0845f647268a" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.2.0" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + sha256: "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.1.0" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" + sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234 url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.1.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea + sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 + sha256: "7fd2f55fe86cea2897b963e864dc01a7eb0719ecc65fcef4c1cc3d686d718bb2" url: "https://pub.dev" source: hosted - version: "2.0.18" + version: "2.2.0" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" + sha256: "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc" url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "3.1.0" uuid: dependency: "direct main" description: @@ -1805,10 +1805,10 @@ packages: dependency: transitive description: name: xdg_directories - sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.3" xml: dependency: transitive description: @@ -1827,4 +1827,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.1.0 <4.0.0" - flutter: ">=3.10.0" + flutter: ">=3.13.0"