From ad3ca513971b579fff50cc15a7adbe7bd3869177 Mon Sep 17 00:00:00 2001 From: Lockie Richter Date: Tue, 12 Dec 2023 10:48:06 +1030 Subject: [PATCH] Update page details --- assets/translations/de-DE.json | 9 ++ assets/translations/en-US.json | 9 ++ ios/Podfile.lock | 24 +-- lib/src/data/book/book_repository.dart | 6 +- .../data/book/firebase_book_repository.dart | 10 +- lib/src/ui/book/book_detail_page.dart | 51 +----- lib/src/ui/book/book_progress_indicator.dart | 145 ++++++++++++++++++ lib/src/ui/core/dante_components.dart | 3 + lib/src/ui/core/platform_components.dart | 13 +- pubspec.lock | 92 +++++------ 10 files changed, 248 insertions(+), 114 deletions(-) create mode 100644 lib/src/ui/book/book_progress_indicator.dart diff --git a/assets/translations/de-DE.json b/assets/translations/de-DE.json index 1631cce..a57d4cc 100644 --- a/assets/translations/de-DE.json +++ b/assets/translations/de-DE.json @@ -52,6 +52,15 @@ "my_thoughts": "", "subtitle": "Write down your thoughts, feelings or some general remarks about {title}" }, + "book_progress": { + "current_page": "TODO", + "enter_pages": "TODO", + "error": "TODO", + "error_current_page": "TODO", + "ok": "TODO", + "page_count": "TODO", + "save": "TODO" + }, "cancel": "Zurück", "change": "Ändern", "change_password": "Passwort ändern", diff --git a/assets/translations/en-US.json b/assets/translations/en-US.json index 0564a5e..bd51d96 100644 --- a/assets/translations/en-US.json +++ b/assets/translations/en-US.json @@ -51,6 +51,15 @@ "my_thoughts": "My thoughts belong here...", "subtitle": "Write down your thoughts, feelings or some general remarks about {title}" }, + "book_progress": { + "current_page": "Current page", + "enter_pages": "Enter pages", + "error": "Error", + "error_current_page": "Current page cannot be greater than page count", + "ok": "Ok", + "page_count": "Pages", + "save": "Save" + }, "cancel": "Cancel", "change": "Change", "change_password": "Change password", diff --git a/ios/Podfile.lock b/ios/Podfile.lock index b060278..dfb1bb2 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -24,26 +24,26 @@ PODS: - Firebase/Storage (10.20.0): - Firebase/CoreOnly - FirebaseStorage (~> 10.20.0) - - firebase_analytics (10.8.4): + - firebase_analytics (10.8.5): - Firebase/Analytics (= 10.20.0) - firebase_core - Flutter - - firebase_auth (4.17.3): + - firebase_auth (4.17.4): - Firebase/Auth (= 10.20.0) - firebase_core - Flutter - - firebase_core (2.25.3): + - firebase_core (2.25.4): - Firebase/CoreOnly (= 10.20.0) - Flutter - - firebase_crashlytics (3.4.13): + - firebase_crashlytics (3.4.14): - Firebase/Crashlytics (= 10.20.0) - firebase_core - Flutter - - firebase_database (10.4.4): + - firebase_database (10.4.5): - Firebase/Database (= 10.20.0) - firebase_core - Flutter - - firebase_storage (11.6.4): + - firebase_storage (11.6.5): - Firebase/Storage (= 10.20.0) - firebase_core - Flutter @@ -275,12 +275,12 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 Firebase: 10c8cb12fb7ad2ae0c09ffc86cd9c1ab392a0031 - firebase_analytics: 6c4873e8164677423b57f44172fb20c202310d7a - firebase_auth: 37eb4a237d7407336d9dc3b739e81153c5077d70 - firebase_core: 96a734ae596de989b81a66f8a205f54485263555 - firebase_crashlytics: daf6839ff459f660d9856cd73f4b6aa6f3435725 - firebase_database: 6f3eac77f7ebbdb8563dbe9032d441434e8c2e0e - firebase_storage: cab6237615be4a29f042640cc6364d54e1b6ffc4 + firebase_analytics: 2e82fd84ce13f8321aa7b99336d6ee0e6cc7b984 + firebase_auth: 29a10d4129d53aa690c10dbd838ed1a059ef0c9b + firebase_core: a46c312d8bae4defa3d009b2aa7b5b413aeb394e + firebase_crashlytics: 3d12285fcbd865d576b9965bd4090cd8b68e11fd + firebase_database: e6b72eeda8dadd6e3965d86b86c997d35e43d4e2 + firebase_storage: 5007be227e54a46f260b6040a23b4fdc8ca1c5c5 FirebaseAnalytics: a2731bf3670747ce8f65368b118d18aa8e368246 FirebaseAppCheckInterop: e81bdb1cdb82f8e0cef353ba5018a8402682032c FirebaseAuth: 9c5c400d2c3055d8ae3a0284944c86fa95d48dac diff --git a/lib/src/data/book/book_repository.dart b/lib/src/data/book/book_repository.dart index c4f44e7..638bdae 100644 --- a/lib/src/data/book/book_repository.dart +++ b/lib/src/data/book/book_repository.dart @@ -20,7 +20,11 @@ abstract class BookRepository { Future delete(String id); - Future updateCurrentPage(String bookId, int currentPage); + Future updatePageInfo({ + required String bookId, + required int currentPage, + required int pageCount, + }); Stream> search(SearchCriteria criteria); diff --git a/lib/src/data/book/firebase_book_repository.dart b/lib/src/data/book/firebase_book_repository.dart index a40d921..be308f4 100644 --- a/lib/src/data/book/firebase_book_repository.dart +++ b/lib/src/data/book/firebase_book_repository.dart @@ -111,7 +111,11 @@ class FirebaseBookRepository implements BookRepository { } @override - Future updateCurrentPage(String bookId, int currentPage) async { + Future updatePageInfo({ + required String bookId, + required int currentPage, + required int pageCount, + }) async { final bookSnapshot = await _booksRef().child(bookId).get(); final bookMap = bookSnapshot.child(bookId).toMap(); @@ -120,7 +124,9 @@ class FirebaseBookRepository implements BookRepository { } final currentBook = Book.fromJson(bookMap); - return update(currentBook.copyWith(currentPage: currentPage)); + return update( + currentBook.copyWith(currentPage: currentPage, pageCount: pageCount), + ); } DatabaseReference _booksRef() { diff --git a/lib/src/ui/book/book_detail_page.dart b/lib/src/ui/book/book_detail_page.dart index 44c4c03..288ea77 100644 --- a/lib/src/ui/book/book_detail_page.dart +++ b/lib/src/ui/book/book_detail_page.dart @@ -5,13 +5,13 @@ import 'package:dantex/src/providers/app_router.dart'; import 'package:dantex/src/providers/book.dart'; import 'package:dantex/src/providers/repository.dart'; import 'package:dantex/src/ui/book/add_label_bottom_sheet.dart'; +import 'package:dantex/src/ui/book/book_progress_indicator.dart'; import 'package:dantex/src/ui/core/generic_error_widget.dart'; import 'package:dantex/src/util/extensions.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; -import 'package:percent_indicator/circular_percent_indicator.dart'; class BookDetailPage extends ConsumerWidget { final String id; @@ -47,7 +47,7 @@ class BookDetailPage extends ConsumerWidget { children: [ _BookInfo(book: book), const SizedBox(height: 20), - _BookProgress(book: book), + BookProgress(book: book), const SizedBox(height: 20), _BookActions(book: book), const SizedBox(height: 20), @@ -139,53 +139,6 @@ class _BookInfo extends StatelessWidget { } } -class _BookProgress extends StatelessWidget { - final Book book; - - const _BookProgress({required this.book}); - - @override - Widget build(BuildContext context) { - return Visibility( - visible: book.pageCount > 0, - child: SizedBox( - height: 140, - child: CircularPercentIndicator( - key: const ValueKey('book-detail-progress-indicator'), - radius: 70.0, - lineWidth: 2.0, - circularStrokeCap: CircularStrokeCap.round, - animation: true, - widgetIndicator: Icon( - Icons.circle, - size: 12, - color: Theme.of(context).colorScheme.secondaryContainer, - ), - percent: book.currentPage / book.pageCount, - center: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.menu_book_outlined, - color: Theme.of(context).colorScheme.secondaryContainer, - ), - const SizedBox(height: 8), - Text( - '${book.currentPage} / ${book.pageCount}', - style: Theme.of(context).textTheme.bodySmall?.copyWith( - color: Theme.of(context).colorScheme.onSurfaceVariant, - ), - ), - ], - ), - backgroundColor: Theme.of(context).colorScheme.secondaryContainer, - progressColor: Theme.of(context).colorScheme.onSecondaryContainer, - ), - ), - ); - } -} - class _BookActions extends StatelessWidget { final Book book; diff --git a/lib/src/ui/book/book_progress_indicator.dart b/lib/src/ui/book/book_progress_indicator.dart new file mode 100644 index 0000000..3263e88 --- /dev/null +++ b/lib/src/ui/book/book_progress_indicator.dart @@ -0,0 +1,145 @@ +import 'package:dantex/src/data/book/entity/book.dart'; +import 'package:dantex/src/providers/repository.dart'; +import 'package:dantex/src/ui/core/dante_components.dart'; +import 'package:dantex/src/ui/core/platform_components.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:percent_indicator/circular_percent_indicator.dart'; + +class BookProgress extends ConsumerStatefulWidget { + final Book book; + + const BookProgress({required this.book, super.key}); + + @override + createState() => _BookProgressState(); +} + +class _BookProgressState extends ConsumerState { + final _currentPageController = TextEditingController(); + final _pageCountController = TextEditingController(); + + @override + void initState() { + super.initState(); + _currentPageController.text = widget.book.currentPage.toString(); + _pageCountController.text = widget.book.pageCount.toString(); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () async => _showEditPageDialog(context), + child: SizedBox( + height: 140, + child: CircularPercentIndicator( + key: const ValueKey('book-detail-progress-indicator'), + radius: 70.0, + lineWidth: 2.0, + circularStrokeCap: CircularStrokeCap.round, + animation: true, + widgetIndicator: Icon( + Icons.circle, + size: 12, + color: Theme.of(context).colorScheme.secondaryContainer, + ), + percent: widget.book.pageCount > 0 + ? widget.book.currentPage / widget.book.pageCount + : 0.0, + center: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.menu_book_outlined, + color: Theme.of(context).colorScheme.secondaryContainer, + ), + const SizedBox(height: 8), + Text( + '${widget.book.currentPage} / ${widget.book.pageCount}', + style: Theme.of(context).textTheme.bodySmall?.copyWith( + color: Theme.of(context).colorScheme.onSurfaceVariant, + ), + ), + ], + ), + backgroundColor: Theme.of(context).colorScheme.secondaryContainer, + progressColor: Theme.of(context).colorScheme.onSecondaryContainer, + ), + ), + ); + } + + Future _showEditPageDialog(BuildContext context) async { + return showDanteDialog( + context, + title: 'book_progress.enter_pages'.tr(), + trailing: IconButton( + icon: const Icon(Icons.close), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + content: Material( + child: Column( + children: [ + DanteTextField( + controller: _currentPageController, + label: Text('book_progress.current_page'.tr()), + ), + const Text( + '/', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + DanteTextField( + controller: _pageCountController, + label: Text('book_progress.page_count'.tr()), + ), + ], + ), + ), + barrierDismissible: true, + actions: [ + DanteDialogAction( + name: 'book_progress.save'.tr(), + action: (BuildContext context) async { + final newCurrentPage = + int.tryParse(_currentPageController.text) ?? 0; + final newPageCount = int.tryParse(_pageCountController.text) ?? 0; + + if (newCurrentPage > newPageCount) { + await showPlatformDialog( + context: context, + builder: (_) => PlatformAlertDialog( + title: Text('book_progress.error'.tr()), + content: Text( + 'book_progress.error_current_page'.tr(), + ), + actions: [ + PlatformDialogAction( + child: Text('ok'.tr()), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + ); + return; + } + if (context.mounted) { + Navigator.of(context).pop(); + } + await ref.read(bookRepositoryProvider).updatePageInfo( + bookId: widget.book.id, + currentPage: newCurrentPage, + pageCount: newPageCount, + ); + }, + ), + ], + ); + } +} diff --git a/lib/src/ui/core/dante_components.dart b/lib/src/ui/core/dante_components.dart index f84d0aa..aedb1a5 100644 --- a/lib/src/ui/core/dante_components.dart +++ b/lib/src/ui/core/dante_components.dart @@ -23,6 +23,7 @@ class DanteTextField extends StatelessWidget { final String? initialValue; final String? hint; final Widget? suffixIcon; + final Widget? label; final bool? enabled; final void Function(String)? onChanged; final int maxLines; @@ -43,6 +44,7 @@ class DanteTextField extends StatelessWidget { this.onChanged, this.errorText, this.formatter, + this.label, }); @override @@ -62,6 +64,7 @@ class DanteTextField extends StatelessWidget { onChanged: onChanged, inputFormatters: [if (formatter != null) formatter!], decoration: InputDecoration( + label: label, errorText: errorText, hintText: hint, suffixIcon: suffixIcon, diff --git a/lib/src/ui/core/platform_components.dart b/lib/src/ui/core/platform_components.dart index 319fa26..d4dd838 100644 --- a/lib/src/ui/core/platform_components.dart +++ b/lib/src/ui/core/platform_components.dart @@ -20,6 +20,7 @@ Future showDanteDialog( required String title, required Widget content, Widget? leading, + Widget? trailing, List actions = const [], bool barrierDismissible = false, }) { @@ -27,7 +28,7 @@ Future showDanteDialog( barrierDismissible: barrierDismissible, context: context, builder: (_) => PlatformAlertDialog( - title: _buildDialogTitle(title, leading), + title: _buildDialogTitle(title, leading, trailing), content: content, actions: actions .map( @@ -65,6 +66,7 @@ Future showDanteInputDialog( required String title, required TextEditingController controller, Widget? leading, + Widget? trailing, String? hint, int maxLines = 1, TextInputAction textInputAction = TextInputAction.next, @@ -76,7 +78,7 @@ Future showDanteInputDialog( context: context, useRootNavigator: false, builder: (_) => PlatformAlertDialog( - title: _buildDialogTitle(title, leading), + title: _buildDialogTitle(title, leading, trailing), content: PlatformTextField( controller: controller, obscureText: obscureText, @@ -108,13 +110,16 @@ Future showDanteInputDialog( ); } -Widget _buildDialogTitle(String title, Widget? leading) { +Widget _buildDialogTitle(String title, Widget? leading, Widget? trailing) { return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ leading ?? const SizedBox.shrink(), const SizedBox(width: 8), - Text(title), + Expanded( + child: Text(title), + ), + trailing ?? const SizedBox.shrink(), ], ); } diff --git a/pubspec.lock b/pubspec.lock index f7d7855..8c8433d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "78f9e0914a5b85de1257a0c1d1af92c4e22f86448133dfc967651ca606a87a82" + sha256: "1a52f1afae8ab7ac4741425114713bdbba802f1ce1e0648e167ffcc6e05e96cf" url: "https://pub.dev" source: hosted - version: "1.3.20" + version: "1.3.21" analyzer: dependency: transitive description: @@ -373,58 +373,58 @@ packages: dependency: "direct main" description: name: firebase_analytics - sha256: bb6c067f552a1723158b99ead19242b72ea41ee56e08403fdd8752d1d128691b + sha256: edb9f9eaecf0e6431e5c12b7fabdb68be3e85ce51f941ccbfa6cb71327e8b535 url: "https://pub.dev" source: hosted - version: "10.8.4" + version: "10.8.5" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: "19189d6c824addc4587de87ccb156668382a761771d50496d4904b99dd98a78c" + sha256: de4a54353cf58412c6da6b660a0dbad8efacb33b345c0286bc3a2edb869124d8 url: "https://pub.dev" source: hosted - version: "3.9.4" + version: "3.9.5" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: e445eca85f60e59bcf7c921c8e7d89bb9a34ac1fce7000628374b340152e9e62 + sha256: "77e4c02ffd0204ccc7856221193265c807b7e056fa62855f973a7f77435b5d41" url: "https://pub.dev" source: hosted - version: "0.5.5+16" + version: "0.5.5+17" firebase_auth: dependency: "direct main" description: name: firebase_auth - sha256: "6dae39ef1a4aba95c160506fa15a6d8545a4dbcffeff80e498a52f4698bbf520" + sha256: "549f8ceb8cfc1920f85dea0ab73fb7dc209ee8182916b252eda342786c33369d" url: "https://pub.dev" source: hosted - version: "4.17.3" + version: "4.17.4" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: "1e8703687fe7ff78ff8b0c580b6476dca18087eadc6985bc8f578b5739b8e8e3" + sha256: "83bfc14649f673db17ad0bffaa0222019f99f3ddf499bcc8b46e1eb3443d3e08" url: "https://pub.dev" source: hosted - version: "7.1.3" + version: "7.1.4" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: "946069f8c96fb7d0fe46bcfbf1902cfa48c7445beff14a1305e29cae7e00c0f5" + sha256: d2266452698dd5f6e522408dacfa06bb7f9703b5bdd11498fce2812ded50805b url: "https://pub.dev" source: hosted - version: "5.9.3" + version: "5.9.4" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "0b066f2dc196de65f4e57dc851984acba751a7929bffaee69464b3f75e175a5c" + sha256: "7e049e32a9d347616edb39542cf92cd53fdb4a99fb6af0a0bff327c14cd76445" url: "https://pub.dev" source: hosted - version: "2.25.3" + version: "2.25.4" firebase_core_platform_interface: dependency: transitive description: @@ -437,74 +437,74 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: df9d4ce37b97ecbe4347fb21887cb61383e3e95f8cf8d6c2de5999ef58e8b312 + sha256: "57e61d6010e253b36d38191cefd6199d7849152cdcd234b61ca290cdb278a0ba" url: "https://pub.dev" source: hosted - version: "2.11.3" + version: "2.11.4" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - sha256: "3b3a02c40399dfee49772ea9fd509b82beda392fe6b289240beca2bd41454523" + sha256: efd096e4c3d2c568e128505b6e4ce5f5d5a1629f700a4d6fee6bd25b85937dde url: "https://pub.dev" source: hosted - version: "3.4.13" + version: "3.4.14" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: a042bf8f4adee2bda6e702c19d53b180284d93cf95d387cc38bfe0fd9145637c + sha256: "225a54d834a118be262c1f1096d407515e35b99d9b474c987abdcff7663f2b81" url: "https://pub.dev" source: hosted - version: "3.6.20" + version: "3.6.21" firebase_database: dependency: "direct main" description: name: firebase_database - sha256: ddbc666802638067b8a4ed56a98419e21d41b6b3242b34b67424aba907b010a7 + sha256: "3beb37b5869e68dba67fc648a9ee2398bb5284d9e94d513e84bb85b1b010048e" url: "https://pub.dev" source: hosted - version: "10.4.4" + version: "10.4.5" firebase_database_platform_interface: dependency: transitive description: name: firebase_database_platform_interface - sha256: fcbedfcca4df64f1acccc913c97bffd9e0877426c6158ec6b2f92c644df4ff04 + sha256: "9d5f25225a17200d59470da1d5c0646c75aaa73c5df6f920e36bae1c60e0b83d" url: "https://pub.dev" source: hosted - version: "0.2.5+20" + version: "0.2.5+21" firebase_database_web: dependency: transitive description: name: firebase_database_web - sha256: "578affd7d6227184340e5b757e3956966bc52d3bc63db6ff0b4aad071c8afe50" + sha256: "751c047a362fad3d2fea60b1d97bbb2f4515097b641a5b38ab5aa5ba0e1afd26" url: "https://pub.dev" source: hosted - version: "0.2.3+20" + version: "0.2.3+21" firebase_storage: dependency: "direct main" description: name: firebase_storage - sha256: "38fc2e0619920c28464d4222198b55fe0326b11264079c10faec9133b3b932b7" + sha256: b87029b506972987a827feaf296c21cd0fe1bb69c2595be1672253ba5205573e url: "https://pub.dev" source: hosted - version: "11.6.4" + version: "11.6.5" firebase_storage_platform_interface: dependency: transitive description: name: firebase_storage_platform_interface - sha256: "810c63afb9e41b06353088603424bbf09b3b5cd7913568981b7c72f6e713b914" + sha256: "180822103b164d0d597131f2fb658cd1c438148abafc6f2256b565227303ba35" url: "https://pub.dev" source: hosted - version: "5.1.7" + version: "5.1.8" firebase_storage_web: dependency: transitive description: name: firebase_storage_web - sha256: "766be7cc58b02f33a6f21fc00d1224daa1a7aef3627a9c546b5dfa50d649d7e2" + sha256: "9523c455521b0497ee436be8614aab52f719309d16147a5b11091e44e4c5aa0a" url: "https://pub.dev" source: hosted - version: "3.6.21" + version: "3.6.22" fixnum: dependency: transitive description: @@ -517,10 +517,10 @@ packages: dependency: "direct main" description: name: fl_chart - sha256: b5e2b0f13d93f8c532b5a2786bfb44580de1f50b927bf95813fa1af617e9caf8 + sha256: "00b74ae680df6b1135bdbea00a7d1fc072a9180b7c3f3702e4b19a9943f5ed7d" url: "https://pub.dev" source: hosted - version: "0.66.1" + version: "0.66.2" flex_color_picker: dependency: "direct main" description: @@ -665,10 +665,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: "07ee2436909f749d606f53521dc1725dd738dc5196e5ff815bc254253c594075" + sha256: "170c46e237d6eb0e6e9f0e8b3f56101e14fb64f787016e42edd74c39cf8b176a" url: "https://pub.dev" source: hosted - version: "13.1.0" + version: "13.2.0" google_fonts: dependency: "direct main" description: @@ -785,10 +785,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: "direct main" description: @@ -1414,26 +1414,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: ff64a3523ea7276fbd6554d7d8479423740546b599776dbd45e3475b12d76260 + sha256: "4ac59808bbfca6da38c99f415ff2d3a5d7ca0a6b4809c71d9cf30fba5daf9752" url: "https://pub.dev" source: hosted - version: "1.1.10" + version: "1.1.10+1" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: be0c85eef2a1db9e6a965e0778193df753ab42951808302c7ac7301969efb4a2 + sha256: f3247e7ab0ec77dc759263e68394990edc608fb2b480b80db8aa86ed09279e33 url: "https://pub.dev" source: hosted - version: "1.1.10" + version: "1.1.10+1" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "23c2716416871a7ac70c2860d68d98aac5f9c3b0a079add9c7324f0518999005" + sha256: "18489bdd8850de3dd7ca8a34e0c446f719ec63e2bab2e7a8cc66a9028dd76c5a" url: "https://pub.dev" source: hosted - version: "1.1.10" + version: "1.1.10+1" vector_math: dependency: transitive description: