diff --git a/README.md b/README.md index 80fd18b..e994b26 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Flood Fill Image -[![Version](https://img.shields.io/pub/v/floodfill_image.svg)](https://pub.dev/packages/floodfill_image) ![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat) [![Support](https://img.shields.io/badge/Buy%20Me%20Coffee-Support-orange?style=flat&logo=buy-me-a-coffee)](https://www.buymeacoffee.com/garlenjavier) +[![Version](https://img.shields.io/pub/v/floodfill_image.svg)](https://pub.dev/packages/floodfill_image) ![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat) [![Support](https://img.shields.io/badge/Buy%20Me%20Coffee-Support-orange?style=flat&logo=buy-me-a-coffee)](https://ko-fi.com/garlen) ## Overview @@ -40,7 +40,7 @@ FloodFillImage( ## Coffee -Buy Me A Coffee +Buy Me A Coffee ## License diff --git a/example/pubspec.lock b/example/pubspec.lock index aa4e792..1db14a2 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,72 +5,74 @@ packages: dependency: transitive description: name: archive - url: "https://pub.dartlang.org" + sha256: a92e39b291073bb840a72cf43d96d2a63c74e9a485d227833e8ea0054d16ad16 + url: "https://pub.dev" source: hosted version: "3.1.2" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.5.0" + 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.1.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" + 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: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.2" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: "8be10341257b613566fdc9fd073c46f7c032ed329b1c732bda17aca29f2366c8" + url: "https://pub.dev" source: hosted version: "3.0.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: caac504f942f41dfadcf45229ce8c47065b93919a12739f20d6173a883c5ec73 + url: "https://pub.dev" source: hosted version: "1.0.2" 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" floodfill_image: dependency: "direct main" description: @@ -92,37 +94,50 @@ packages: dependency: transitive description: name: image - url: "https://pub.dartlang.org" + sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "4.0.17" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.5.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.9.1" 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" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "5.4.0" sky_engine: dependency: transitive description: flutter @@ -132,65 +147,82 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" 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: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + url: "https://pub.dev" source: hosted - version: "0.2.19" + version: "0.6.0" 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.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "0.1.4-beta" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "6.3.0" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=1.17.0" diff --git a/lib/src/floodfill_image.dart b/lib/src/floodfill_image.dart index e2a7159..442e049 100644 --- a/lib/src/floodfill_image.dart +++ b/lib/src/floodfill_image.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'dart:ui' as ui; import 'floodfill_painter.dart'; +import 'package:image/image.dart' as img; class FloodFillImage extends StatefulWidget { /// The image to display via [ImageProvider]. @@ -41,7 +42,7 @@ class FloodFillImage extends StatefulWidget { /// Callback function that returns the touch position and an [Image] from *dart:ui* when flood fill starts. ///
**Note:** Touch coordinate is relative to the image dimension. - final Function(Offset position,ui.Image image)? onFloodFillStart; + final Function(Offset position, ui.Image image)? onFloodFillStart; /// Callback function that returns an [Image] from *dart:ui* when flood fill ended. final Function(ui.Image image)? onFloodFillEnd; @@ -101,7 +102,8 @@ class _FloodFillImageState extends State { void _getImage() { final ImageStream? oldImageStream = _imageStream; - _imageStream = _imageProvider?.resolve(createLocalImageConfiguration(context)); + _imageStream = + _imageProvider?.resolve(createLocalImageConfiguration(context)); if (_imageStream?.key != oldImageStream?.key) { final ImageStreamListener listener = ImageStreamListener(_updateImage); oldImageStream?.removeListener(listener); @@ -116,7 +118,8 @@ class _FloodFillImageState extends State { _repainter = ValueNotifier(""); _painter = FloodFillPainter( image: _imageInfo!.image, - fillColor: widget.fillColor, + fillColor: img.ColorRgba8(widget.fillColor.red, widget.fillColor.green, + widget.fillColor.blue, widget.fillColor.alpha), notifier: _repainter, onFloodFillStart: widget.onFloodFillStart, onFloodFillEnd: widget.onFloodFillEnd, @@ -136,7 +139,12 @@ class _FloodFillImageState extends State { @override Widget build(BuildContext context) { if (_painter != null) { - _painter?.setFillColor(widget.fillColor); //incase we want to update fillColor + final fillColor = img.ColorRgba8( + widget.fillColor.red, + widget.fillColor.green, + widget.fillColor.blue, + widget.fillColor.alpha); + _painter?.setFillColor(fillColor); //incase we want to update fillColor _painter?.setAvoidColor(widget.avoidColor!); _painter?.setTolerance(widget.tolerance); _painter?.setIsFillActive(widget.isFillActive); @@ -164,7 +172,8 @@ class _FloodFillImageState extends State { _painter!.setSize(Size(w, h)); return (widget.alignment == null) - ? RepaintBoundary(child: CustomPaint(painter: _painter, size: Size(w, h))) + ? RepaintBoundary( + child: CustomPaint(painter: _painter, size: Size(w, h))) : Align( alignment: widget.alignment!, child: CustomPaint(painter: _painter, size: Size(w, h))); diff --git a/lib/src/floodfill_painter.dart b/lib/src/floodfill_painter.dart index 3f869c0..93fba9b 100644 --- a/lib/src/floodfill_painter.dart +++ b/lib/src/floodfill_painter.dart @@ -16,8 +16,8 @@ class FloodFillPainter extends CustomPainter { ValueNotifier? notifier; ui.Image image; - Color fillColor; - Function(Offset,ui.Image)? onFloodFillStart; + img.Color fillColor; + Function(Offset, ui.Image)? onFloodFillStart; Function(ui.Image)? onFloodFillEnd; Function? onInitialize; Function? onRepainted; @@ -34,10 +34,11 @@ class FloodFillPainter extends CustomPainter { } void _initFloodFiller() async { - ByteData byteData = (await image.toByteData(format: ui.ImageByteFormat.png))!; + ByteData byteData = + (await image.toByteData(format: ui.ImageByteFormat.png))!; var bytes = byteData.buffer.asUint8List(); img.Image decoded = img.decodeImage(bytes)!; - _filler = QueueLinearFloodFiller(decoded, img.getColor(fillColor.red, fillColor.green, fillColor.blue, fillColor.alpha)); + _filler = QueueLinearFloodFiller(decoded, fillColor); onInitialize!(); } @@ -47,8 +48,8 @@ class FloodFillPainter extends CustomPainter { _filler?.resize(size); } - void setFillColor(Color color) { - _filler?.setFillColor(img.getColor(color.red, color.green, color.blue, color.alpha)); + void setFillColor(img.Color color) { + _filler?.setFillColor(color); } void setIsFillActive(bool isActive) { @@ -63,17 +64,17 @@ class FloodFillPainter extends CustomPainter { if (tolerance != null) _filler?.setTolerance(tolerance); } - bool _checkAvoidColor(int touchColor) { + bool _checkAvoidColor(img.Color touchColor) { if (_avoidColor == null) return false; return _avoidColor!.any((element) => _isAvoidColor(element, touchColor)); } - bool _isAvoidColor(Color avoidColor, int touchColor) { - int touchR = img.getRed(touchColor); - int touchG = img.getGreen(touchColor); - int touchB = img.getBlue(touchColor); - int touchA = img.getAlpha(touchColor); + bool _isAvoidColor(Color avoidColor, img.Color touchColor) { + final touchR = touchColor.r; + final touchG = touchColor.g; + final touchB = touchColor.b; + final touchA = touchColor.a; int red = avoidColor.red; int green = avoidColor.green; @@ -98,9 +99,9 @@ class FloodFillPainter extends CustomPainter { if (pX < 0 || pY < 0) return; - int touchColor = _filler!.image!.getPixelSafe(pX, pY); + final touchColor = _filler!.image!.getPixelSafe(pX, pY); if (_checkAvoidColor(touchColor)) return; - if (onFloodFillStart != null) onFloodFillStart!(position,image); + if (onFloodFillStart != null) onFloodFillStart!(position, image); _filler?.setTargetColor(touchColor); await _filler!.floodFill(pX, pY); @@ -137,11 +138,15 @@ class FloodFillPainter extends CustomPainter { BoxFit.fill); } - void paintImage(ui.Image image, Rect outputRect, Canvas canvas, Paint paint, BoxFit fit) { - final Size imageSize = Size(image.width.toDouble(), image.height.toDouble()); - final FittedSizes sizes = applyBoxFit(fit, imageSize, outputRect.size); - final Rect inputSubrect = Alignment.center.inscribe(sizes.source, Offset.zero & imageSize); - final Rect outputSubrect = Alignment.center.inscribe(sizes.destination, outputRect); + void paintImage( + ui.Image image, Rect outputRect, Canvas canvas, Paint paint, BoxFit fit) { + final Size imageSize = + Size(image.width.toDouble(), image.height.toDouble()); + final FittedSizes sizes = applyBoxFit(fit, imageSize, outputRect.size); + final Rect inputSubrect = + Alignment.center.inscribe(sizes.source, Offset.zero & imageSize); + final Rect outputSubrect = + Alignment.center.inscribe(sizes.destination, outputRect); canvas.drawImageRect(image, inputSubrect, outputSubrect, paint); } @@ -150,5 +155,3 @@ class FloodFillPainter extends CustomPainter { return true; } } - - diff --git a/lib/src/queuelinear_floodfiller.dart b/lib/src/queuelinear_floodfiller.dart index 4b3b717..9fb3e2e 100644 --- a/lib/src/queuelinear_floodfiller.dart +++ b/lib/src/queuelinear_floodfiller.dart @@ -6,6 +6,7 @@ import 'dart:async'; import 'dart:collection'; import 'dart:ui'; +import 'package:flutter/material.dart'; import 'package:image/image.dart' as img; class QueueLinearFloodFiller { @@ -14,13 +15,13 @@ class QueueLinearFloodFiller { int _height = 0; int _cachedWidth = -1; int _cachedHeight = -1; - int _fillColor = 0; + late img.Color _fillColor; int _tolerance = 8; - List _startColor = [0, 0, 0, 0]; + List _startColor = [0, 0, 0, 0]; List? _pixelsChecked; Queue<_FloodFillRange>? _ranges; - QueueLinearFloodFiller(img.Image imgVal, int newColor) { + QueueLinearFloodFiller(img.Image imgVal, img.Color newColor) { image = imgVal; _width = image!.width; _height = image!.height; @@ -28,8 +29,10 @@ class QueueLinearFloodFiller { } void resize(Size size) { - if (_cachedWidth != size.width.toInt() || _cachedHeight != size.height.toInt()) { - image = img.copyResize(image!, width: size.width.toInt(), height: size.height.toInt()); + if (_cachedWidth != size.width.toInt() || + _cachedHeight != size.height.toInt()) { + image = img.copyResize(image!, + width: size.width.toInt(), height: size.height.toInt()); _width = image!.width; _height = image!.height; _cachedWidth = _width; @@ -37,22 +40,22 @@ class QueueLinearFloodFiller { } } - void setTargetColor(int targetColor) { - _startColor[0] = img.getRed(targetColor); - _startColor[1] = img.getGreen(targetColor); - _startColor[2] = img.getBlue(targetColor); - _startColor[3] = img.getAlpha(targetColor); + void setTargetColor(img.Color targetColor) { + _startColor[0] = targetColor.r; + _startColor[1] = targetColor.g; + _startColor[2] = targetColor.b; + _startColor[3] = targetColor.a; } void setTolerance(int value) { _tolerance = value.clamp(0, 100); } - int getFillColor() { + img.Color? getFillColor() { return _fillColor; } - void setFillColor(int value) { + void setFillColor(img.Color value) { _fillColor = value; } @@ -71,11 +74,10 @@ class QueueLinearFloodFiller { if (_startColor[0] == 0) { // ***Get starting color. - int startPixel = image!.getPixelSafe(x, y); - - _startColor[0] = img.getRed(startPixel); - _startColor[1] = img.getGreen(startPixel); - _startColor[2] = img.getBlue(startPixel); + final startPixel = image!.getPixelSafe(x, y); + _startColor[0] = startPixel.r; + _startColor[1] = startPixel.g; + _startColor[2] = startPixel.b; } // ***Do first call to floodfill. @@ -133,7 +135,7 @@ class QueueLinearFloodFiller { while (true) { // **fill with the color //pixels[pxIdx] = _fillColor; - image?.setPixelSafe(lFillLoc, y, _fillColor); + image?.setPixel(lFillLoc, y, _fillColor); // **indicate that this pixel has already been checked and filled _pixelsChecked![pxIdx] = true; @@ -158,7 +160,7 @@ class QueueLinearFloodFiller { while (true) { // **fill with the color - image?.setPixelSafe(rFillLoc, y, _fillColor); + image?.setPixel(rFillLoc, y, _fillColor); // **indicate that this pixel has already been checked and filled _pixelsChecked![pxIdx] = true; @@ -183,11 +185,11 @@ class QueueLinearFloodFiller { // Sees if a pixel is within the color tolerance range. bool _checkPixel(int x, int y) { - int pixelColor = image!.getPixelSafe(x, y); - int red = img.getRed(pixelColor); - int green = img.getGreen(pixelColor); - int blue = img.getBlue(pixelColor); - int alpha = img.getAlpha(pixelColor); + final pixelColor = image!.getPixelSafe(x, y); + final red = pixelColor.r; + final green = pixelColor.g; + final blue = pixelColor.b; + final alpha = pixelColor.a; return (red >= (_startColor[0] - _tolerance) && red <= (_startColor[0] + _tolerance) && @@ -204,7 +206,7 @@ class QueueLinearFloodFiller { class _FloodFillRange { int startX = -1; int endX = -1; - int y = - 1; + int y = -1; _FloodFillRange(int startX, int endX, int yPos) { this.startX = startX; diff --git a/pubspec.lock b/pubspec.lock index 231cd3f..9571c85 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,65 +5,66 @@ packages: dependency: transitive description: name: archive - url: "https://pub.dartlang.org" + sha256: a92e39b291073bb840a72cf43d96d2a63c74e9a485d227833e8ea0054d16ad16 + url: "https://pub.dev" source: hosted version: "3.1.2" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.5.0" + 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.1.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" + 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: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.2" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: "8be10341257b613566fdc9fd073c46f7c032ed329b1c732bda17aca29f2366c8" + url: "https://pub.dev" source: hosted version: "3.0.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 @@ -78,37 +79,50 @@ packages: dependency: "direct main" description: name: image - url: "https://pub.dartlang.org" + sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "4.0.17" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.5.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.9.1" 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" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "5.4.0" sky_engine: dependency: transitive description: flutter @@ -118,65 +132,82 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" 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: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + url: "https://pub.dev" source: hosted - version: "0.2.19" + version: "0.6.0" 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.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "0.1.4-beta" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "6.3.0" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=1.17.0" diff --git a/pubspec.yaml b/pubspec.yaml index dcbb832..ed0119d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,7 +10,7 @@ environment: dependencies: flutter: sdk: flutter - image: ^3.0.1 + image: ^4.0.17 dev_dependencies: flutter_test: