vector_graphics icon indicating copy to clipboard operation
vector_graphics copied to clipboard

adjust vector_graphics errorBuilder (to trigger on BytesLoader errors)

Open Yagorundy opened this issue 2 years ago • 1 comments

COPIED FROM https://github.com/dnfield/flutter_svg/issues/996

My use case: I am trying to fallback to a svg in assets if my SvgPicture.network() fails for any reason (wrong url, request returns 404, invalid svg format, ...)

widgets like the Flutter Image fully support this errorBuilder and any error in the process (image loading/parsing/rendering) triggers the errorBuilder callback

From my observations:

  • SvgPicture widget does not accept errorBuilder
  • The vector_graphics package does not trigger errorBuilder for BytesLoader objects loadBytes() calls, it only triggers it for errors in decodeVectorGraphics()

image from vector_graphics.dart image

Yagorundy avatar Oct 13 '23 08:10 Yagorundy

This happens with local files as well, and would be great to have a callback so we default to a non-optimised svg image.

dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3  throw_
packages/vector_graphics/src/listener.dart 133:5                             decodeVectorGraphics
packages/vector_graphics/src/vector_graphics.dart 356:14                     <fn>
dart-sdk/lib/async/zone.dart 1661:54                                         runUnary
dart-sdk/lib/async/future_impl.dart 163:18                                   handleValue
dart-sdk/lib/async/future_impl.dart 847:44                                   handleValueCallback
dart-sdk/lib/async/future_impl.dart 876:13                                   _propagateToListeners
dart-sdk/lib/async/future_impl.dart 652:5                                    [_completeWithValue]
dart-sdk/lib/async/future_impl.dart 722:7                                    callback
dart-sdk/lib/async/schedule_microtask.dart 40:11                             _microtaskLoop
dart-sdk/lib/async/schedule_microtask.dart 49:5                              _startMicrotaskLoop
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 181:7           <fn>
Error

pedromassango avatar Aug 21 '24 17:08 pedromassango