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
-[](https://pub.dev/packages/floodfill_image)  [](https://www.buymeacoffee.com/garlenjavier)
+[](https://pub.dev/packages/floodfill_image)  [](https://ko-fi.com/garlen)
## Overview
@@ -40,7 +40,7 @@ FloodFillImage(
## 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: