From 5ad21e4f0901fa257d4ab89eb82260cbf2f1d01f Mon Sep 17 00:00:00 2001 From: Rene Floor Date: Mon, 25 Sep 2023 12:00:17 +0200 Subject: [PATCH 1/3] Removed blurhash dependency --- CHANGELOG.md | 3 +++ README.md | 47 ++++++++++++++++++++++++++++++++++++-- example/lib/main.dart | 16 ------------- example/lib/main_sets.dart | 1 - example/pubspec.lock | 11 ++------- lib/src/errors.dart | 20 ---------------- lib/src/octo_set.dart | 34 ++++++++------------------- lib/src/placeholders.dart | 13 ----------- pubspec.lock | 9 +------- pubspec.yaml | 1 - test/templates_test.dart | 1 - 11 files changed, 60 insertions(+), 96 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44d6a49..e3604e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [2.0.0] - 2023-09-25 +* Remove Blurhash dependency, see [in the readme](https://pub.dev/packages/octo_image#blurhash) how to keep using blurhash. + ## [1.0.2] - 2022-05-16 * Update Blurhash dependency diff --git a/README.md b/README.md index 13e1178..c982127 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,7 @@ You can use them with OctoImage.fromSet: ```dart OctoImage.fromSet( image: image, - octoSet: OctoSet.blurHash('LEHV6nWB2yk8pyo0adR*.7kCMdnj'), + octoSet: OctoSet.circleAvatar(backgroundColor: Colors.red, text: Text("M")), ), ``` @@ -178,10 +178,53 @@ All included OctoSets are: |**OctoSet**|**Explanation**| |---|---| -|blurHash|Shows a blurhash as placeholder and error widget. When an error is thrown an icon is shown on top.| |circleAvatar|Shows a colored circle with text during load and error. Clips the image after successful load.| |circularIndicatorAndIcon|Shows a circularProgressIndicator with or without progress and an icon on error.| +### Blurhash +You can easily create your own OctoSet though, for example if you want to use blurHash as a placeholder: +```dart +/// Simple set to show [OctoPlaceholder.circularProgressIndicator] as +/// placeholder and [OctoError.icon] as error. +OctoSet blurHash( + String hash, { + BoxFit? fit, + Text? errorMessage, +}) { + return OctoSet( + placeholderBuilder: blurHashPlaceholderBuilder(hash, fit: fit), + errorBuilder: blurHashErrorBuilder(hash, fit: fit), + ); +} + +OctoPlaceholderBuilder blurHashPlaceholderBuilder(String hash, {BoxFit? fit}) { + return (context) => SizedBox.expand( + child: Image( + image: BlurHashImage(hash), + fit: fit ?? BoxFit.cover, + ), + ); +} + + +OctoErrorBuilder blurHashErrorBuilder( + String hash, { + BoxFit? fit, + Text? message, + IconData? icon, + Color? iconColor, + double? iconSize, +}) { + return OctoError.placeholderWithErrorIcon( + blurHashPlaceholderBuilder(hash, fit: fit), + message: message, + icon: icon, + iconColor: iconColor, + iconSize: iconSize, + ); +} +``` + # Contribute If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature), please carefully review our [contribution guide](CONTRIBUTING.md) and send us your [pull request](https://github.com/Baseflow/octo_image/pulls). diff --git a/example/lib/main.dart b/example/lib/main.dart index bfc1bf1..30475b0 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -31,8 +31,6 @@ class OctoImagePage extends StatelessWidget { children: [ _customImage(), const SizedBox(height: 16), - _simpleBlur(), - const SizedBox(height: 16), _circleAvatar(), ], ), @@ -57,20 +55,6 @@ class OctoImagePage extends StatelessWidget { ); } - Widget _simpleBlur() { - return AspectRatio( - aspectRatio: 269 / 173, - child: OctoImage( - image: const NetworkImage('https://blurha.sh/assets/images/img1.jpg'), - placeholderBuilder: OctoPlaceholder.blurHash( - 'LEHV6nWB2yk8pyo0adR*.7kCMdnj', - ), - errorBuilder: OctoError.icon(color: Colors.red), - fit: BoxFit.cover, - ), - ); - } - Widget _circleAvatar() { return SizedBox( height: 75, diff --git a/example/lib/main_sets.dart b/example/lib/main_sets.dart index 576ce1f..6b4ebb0 100644 --- a/example/lib/main_sets.dart +++ b/example/lib/main_sets.dart @@ -16,7 +16,6 @@ class MyApp extends StatelessWidget { theme: ThemeData(), home: OctoImagePage( sets: [ - OctoSet.blurHash('LEHV6nWB2yk8pyo0adR*.7kCMdnj'), OctoSet.circleAvatar( backgroundColor: Colors.red, text: const Text( diff --git a/example/pubspec.lock b/example/pubspec.lock index f0c082f..f659dae 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -55,13 +55,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_blurhash: - dependency: transitive - description: - name: flutter_blurhash - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.0" flutter_lints: dependency: "direct dev" description: @@ -122,7 +115,7 @@ packages: path: ".." relative: true source: path - version: "1.0.1" + version: "1.0.2" path: dependency: transitive description: @@ -192,4 +185,4 @@ packages: source: hosted version: "2.1.1" sdks: - dart: ">=2.15.0 <3.0.0" + dart: ">=2.14.0 <3.0.0" diff --git a/lib/src/errors.dart b/lib/src/errors.dart index 6ba0c84..9282fd4 100644 --- a/lib/src/errors.dart +++ b/lib/src/errors.dart @@ -10,26 +10,6 @@ import '../octo_image.dart'; /// errorBuilder: OctoError.icon(), /// ); class OctoError { - /// Show [OctoPlaceholder.blurHash] with an error icon on top. - /// Error icon can be modified along with its size and color. - /// By default icon color will be the value given by the current [IconTheme]. - static OctoErrorBuilder blurHash( - String hash, { - BoxFit? fit, - Text? message, - IconData? icon, - Color? iconColor, - double? iconSize, - }) { - return placeholderWithErrorIcon( - OctoPlaceholder.blurHash(hash, fit: fit), - message: message, - icon: icon, - iconColor: iconColor, - iconSize: iconSize, - ); - } - /// Displays a [CircleAvatar] as errorWidget static OctoErrorBuilder circleAvatar({ required Color backgroundColor, diff --git a/lib/src/octo_set.dart b/lib/src/octo_set.dart index 7d43cbc..f639996 100644 --- a/lib/src/octo_set.dart +++ b/lib/src/octo_set.dart @@ -25,50 +25,34 @@ class OctoSet { /// Widget displayed while the target [imageUrl] failed loading. final OctoErrorBuilder? errorBuilder; - OctoSet._({ + OctoSet({ this.imageBuilder, this.placeholderBuilder, this.progressIndicatorBuilder, this.errorBuilder, }) : assert(placeholderBuilder != null || progressIndicatorBuilder != null); - /// Simple set to show [OctoPlaceholder.circularProgressIndicator] as - /// placeholder and [OctoError.icon] as error. - factory OctoSet.blurHash( - String hash, { - BoxFit? fit, - Text? errorMessage, - }) { - return OctoSet._( - placeholderBuilder: OctoPlaceholder.blurHash(hash, fit: fit), - errorBuilder: OctoError.blurHash(hash, fit: fit), - ); - } - /// Simple set to show [OctoPlaceholder.circularProgressIndicator] as /// placeholder and [OctoError.icon] as error. factory OctoSet.circleAvatar({ required Color backgroundColor, required Widget text, }) { - return OctoSet._( - placeholderBuilder: OctoPlaceholder.circleAvatar( - backgroundColor: backgroundColor, text: text), + return OctoSet( + placeholderBuilder: + OctoPlaceholder.circleAvatar(backgroundColor: backgroundColor, text: text), imageBuilder: OctoImageTransformer.circleAvatar(), - errorBuilder: - OctoError.circleAvatar(backgroundColor: backgroundColor, text: text), + errorBuilder: OctoError.circleAvatar(backgroundColor: backgroundColor, text: text), ); } /// Simple set to show [OctoPlaceholder.circularProgressIndicator] as /// placeholder and [OctoError.icon] as error. factory OctoSet.circularIndicatorAndIcon({bool showProgress = false}) { - return OctoSet._( - placeholderBuilder: - showProgress ? null : OctoPlaceholder.circularProgressIndicator(), - progressIndicatorBuilder: showProgress - ? OctoProgressIndicator.circularProgressIndicator() - : null, + return OctoSet( + placeholderBuilder: showProgress ? null : OctoPlaceholder.circularProgressIndicator(), + progressIndicatorBuilder: + showProgress ? OctoProgressIndicator.circularProgressIndicator() : null, errorBuilder: OctoError.icon(), ); } diff --git a/lib/src/placeholders.dart b/lib/src/placeholders.dart index 5193a90..f60b006 100644 --- a/lib/src/placeholders.dart +++ b/lib/src/placeholders.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter_blurhash/flutter_blurhash.dart'; import '../octo_image.dart'; @@ -10,18 +9,6 @@ import '../octo_image.dart'; /// placeholderBuilder: OctoPlaceholder.circularProgressIndicator(), /// ); class OctoPlaceholder { - /// Use [BlurHash](https://pub.dev/packages/flutter_blurhash) as a placeholder. - /// The hash should be made server side. See [blurha.sh](https://blurha.sh/) for more information. - /// [fit] defaults to [BoxFit.cover]. - static OctoPlaceholderBuilder blurHash(String hash, {BoxFit? fit}) { - return (context) => SizedBox.expand( - child: Image( - image: BlurHashImage(hash), - fit: fit ?? BoxFit.cover, - ), - ); - } - /// Displays a [CircleAvatar] as placeholder static OctoPlaceholderBuilder circleAvatar({ required Color backgroundColor, diff --git a/pubspec.lock b/pubspec.lock index 64919a6..60668eb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -55,13 +55,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_blurhash: - dependency: "direct main" - description: - name: flutter_blurhash - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.0" flutter_lints: dependency: "direct dev" description: @@ -171,4 +164,4 @@ packages: source: hosted version: "2.1.1" sdks: - dart: ">=2.15.0 <3.0.0" + dart: ">=2.14.0 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 3493ce1..00dc3b6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,7 +9,6 @@ environment: dependencies: flutter: sdk: flutter - flutter_blurhash: '>=0.6.0 <0.8.0' dev_dependencies: flutter_test: diff --git a/test/templates_test.dart b/test/templates_test.dart index 5e2c6b1..060f8b5 100644 --- a/test/templates_test.dart +++ b/test/templates_test.dart @@ -3,7 +3,6 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:octo_image/octo_image.dart'; List placeholderBuilders = [ - OctoPlaceholder.blurHash('LEHV6nWB2yk8pyo0adR*.7kCMdnj'), OctoPlaceholder.circularProgressIndicator(), OctoPlaceholder.circleAvatar( backgroundColor: Colors.blue, From 36ec247da7a9bc8c065d5c99c8949ff9a46c524a Mon Sep 17 00:00:00 2001 From: Rene Floor Date: Mon, 25 Sep 2023 14:22:58 +0200 Subject: [PATCH 2/3] update version in pubspec --- pubspec.lock | 113 ++++++++++++++++++++++++++++----------------------- pubspec.yaml | 2 +- 2 files changed, 64 insertions(+), 51 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 60668eb..c4243a0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,51 +5,50 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.18.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -59,7 +58,8 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + url: "https://pub.dev" source: hosted version: "1.0.4" flutter_test: @@ -71,37 +71,42 @@ packages: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.5.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.10.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.3" sky_engine: dependency: transitive description: flutter @@ -111,57 +116,65 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" source: hosted - version: "0.4.8" - typed_data: + version: "0.6.1" + vector_math: dependency: transitive description: - name: typed_data - url: "https://pub.dartlang.org" + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "1.3.0" - vector_math: + version: "2.1.4" + web: dependency: transitive description: - name: vector_math - url: "https://pub.dartlang.org" + name: web + sha256: "14f1f70c51119012600c5f1f60ca68efda5a9b6077748163c6af2893ec5df8fc" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "0.2.1-beta" sdks: - dart: ">=2.14.0 <3.0.0" + dart: ">=3.2.0-157.0.dev <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 00dc3b6..177b625 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: octo_image description: A multifunctional Flutter image widget. Supports placeholders, error widgets and image transformers with fading. -version: 1.0.2 +version: 2.0.0 homepage: https://github.com/Baseflow/octo_image environment: From c2a488ddb6e3046b57bd54a4d5eb5a7293704fa1 Mon Sep 17 00:00:00 2001 From: Rene Floor Date: Mon, 25 Sep 2023 14:34:44 +0200 Subject: [PATCH 3/3] Fix deprecated load in mock image providers --- .github/workflows/build.yaml | 4 +- example/lib/helpers/mock_image_provider.dart | 12 +- example/pubspec.lock | 115 ++++++++++++------- lib/src/octo_set.dart | 15 ++- pubspec.yaml | 1 + test/helpers/mock_image_provider.dart | 9 +- 6 files changed, 98 insertions(+), 58 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 2c030d1..044af7f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -35,8 +35,8 @@ jobs: working-directory: ${{env.source-directory}} # Run Flutter Format to ensure formatting is valid - - name: Run Flutter Format - run: flutter format --set-exit-if-changed . + - name: Run Dart Format + run: dart format --set-exit-if-changed . working-directory: ${{env.source-directory}} analyze: diff --git a/example/lib/helpers/mock_image_provider.dart b/example/lib/helpers/mock_image_provider.dart index 6392991..1e3b0b0 100644 --- a/example/lib/helpers/mock_image_provider.dart +++ b/example/lib/helpers/mock_image_provider.dart @@ -1,6 +1,6 @@ -import 'dart:async' show Future, StreamController; -import 'dart:typed_data'; +import 'dart:async'; import 'dart:ui' as ui show Codec; +import 'package:flutter/services.dart'; import 'package:http/http.dart' as http; import 'package:flutter/foundation.dart'; @@ -33,7 +33,8 @@ class MockImageProvider extends ImageProvider { } @override - ImageStreamCompleter load(MockImageProvider key, DecoderCallback decode) { + ImageStreamCompleter loadImage( + MockImageProvider key, ImageDecoderCallback decode) { final chunkEvents = StreamController(); return MultiFrameImageStreamCompleter( codec: _loadAsync(key, chunkEvents, decode).first, @@ -45,7 +46,7 @@ class MockImageProvider extends ImageProvider { Stream _loadAsync( MockImageProvider key, StreamController chunkEvents, - DecoderCallback decode, + ImageDecoderCallback decode, ) async* { try { if (showLoading) { @@ -62,7 +63,8 @@ class MockImageProvider extends ImageProvider { var url = 'https://blurha.sh/assets/images/img1.jpg'; Uint8List imageBytes; imageBytes = (await http.get(Uri.parse(url))).bodyBytes; - var decodedImage = await decode(imageBytes); + final buffer = await ImmutableBuffer.fromUint8List(imageBytes); + var decodedImage = await decode(buffer); yield decodedImage; } finally { await chunkEvents.close(); diff --git a/example/pubspec.lock b/example/pubspec.lock index f659dae..6d6735d 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,51 +5,58 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.dartlang.org" + sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + url: "https://pub.dev" source: hosted version: "1.3.1" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.18.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -59,7 +66,8 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + url: "https://pub.dev" source: hosted version: "1.0.4" flutter_test: @@ -71,58 +79,65 @@ packages: dependency: "direct main" description: name: http - url: "https://pub.dartlang.org" + sha256: "2ed163531e071c2c6b7c659635112f24cb64ecbebf6af46b550d536c0b1aa112" + url: "https://pub.dev" source: hosted version: "0.13.4" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: e362d639ba3bc07d5a71faebb98cde68c05bfbcfbbb444b60b6f60bb67719185 + url: "https://pub.dev" source: hosted version: "4.0.0" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.5.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.10.0" octo_image: dependency: "direct main" description: path: ".." relative: true source: path - version: "1.0.2" + version: "2.0.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.3" sky_engine: dependency: transitive description: flutter @@ -132,57 +147,73 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" source: hosted - version: "0.4.8" + version: "0.6.1" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: "53bdf7e979cfbf3e28987552fd72f637e63f3c8724c9e56d9246942dc2fa36ee" + url: "https://pub.dev" source: hosted version: "1.3.0" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: "14f1f70c51119012600c5f1f60ca68efda5a9b6077748163c6af2893ec5df8fc" + url: "https://pub.dev" + source: hosted + version: "0.2.1-beta" sdks: - dart: ">=2.14.0 <3.0.0" + dart: ">=3.2.0-157.0.dev <4.0.0" diff --git a/lib/src/octo_set.dart b/lib/src/octo_set.dart index f639996..241ef24 100644 --- a/lib/src/octo_set.dart +++ b/lib/src/octo_set.dart @@ -39,10 +39,11 @@ class OctoSet { required Widget text, }) { return OctoSet( - placeholderBuilder: - OctoPlaceholder.circleAvatar(backgroundColor: backgroundColor, text: text), + placeholderBuilder: OctoPlaceholder.circleAvatar( + backgroundColor: backgroundColor, text: text), imageBuilder: OctoImageTransformer.circleAvatar(), - errorBuilder: OctoError.circleAvatar(backgroundColor: backgroundColor, text: text), + errorBuilder: + OctoError.circleAvatar(backgroundColor: backgroundColor, text: text), ); } @@ -50,9 +51,11 @@ class OctoSet { /// placeholder and [OctoError.icon] as error. factory OctoSet.circularIndicatorAndIcon({bool showProgress = false}) { return OctoSet( - placeholderBuilder: showProgress ? null : OctoPlaceholder.circularProgressIndicator(), - progressIndicatorBuilder: - showProgress ? OctoProgressIndicator.circularProgressIndicator() : null, + placeholderBuilder: + showProgress ? null : OctoPlaceholder.circularProgressIndicator(), + progressIndicatorBuilder: showProgress + ? OctoProgressIndicator.circularProgressIndicator() + : null, errorBuilder: OctoError.icon(), ); } diff --git a/pubspec.yaml b/pubspec.yaml index 177b625..378b95b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,6 +5,7 @@ homepage: https://github.com/Baseflow/octo_image environment: sdk: '>=2.12.0 <3.0.0' + flutter: '>=3.7.0' dependencies: flutter: diff --git a/test/helpers/mock_image_provider.dart b/test/helpers/mock_image_provider.dart index 9b81e6f..b52106a 100644 --- a/test/helpers/mock_image_provider.dart +++ b/test/helpers/mock_image_provider.dart @@ -1,5 +1,6 @@ import 'dart:async' show Future, StreamController; import 'dart:ui' as ui show Codec; +import 'dart:ui'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -33,7 +34,8 @@ class MockImageProvider extends ImageProvider { } @override - ImageStreamCompleter load(MockImageProvider key, DecoderCallback decode) { + ImageStreamCompleter loadImage( + MockImageProvider key, ImageDecoderCallback decode) { final chunkEvents = StreamController(); return MultiFrameImageStreamCompleter( codec: _loadAsync(key, chunkEvents, decode).first, @@ -45,7 +47,7 @@ class MockImageProvider extends ImageProvider { Stream _loadAsync( MockImageProvider key, StreamController chunkEvents, - DecoderCallback decode, + ImageDecoderCallback decode, ) async* { try { if (showLoading) { @@ -58,7 +60,8 @@ class MockImageProvider extends ImageProvider { if (fail) { throw Exception('Image loading failed'); } - var decodedImage = await decode(kTransparentImage); + final buffer = await ImmutableBuffer.fromUint8List(kTransparentImage); + var decodedImage = await decode(buffer); yield decodedImage; } finally { await chunkEvents.close();