From a344580a2cd0716c6da95096bad9588ba577de11 Mon Sep 17 00:00:00 2001 From: EwertonRP Date: Mon, 23 Oct 2023 21:17:01 -0300 Subject: [PATCH] Add NullSafety support --- example/lib/main.dart | 16 ++-- example/pubspec.lock | 102 ++++++++++++++---------- example/pubspec.yaml | 2 +- lib/src/pie.dart | 10 +-- lib/src/spinning_wheel.dart | 152 ++++++++++++++++++------------------ lib/src/utils.dart | 16 ++-- pubspec.lock | 104 ++++++++++++++---------- pubspec.yaml | 4 +- 8 files changed, 224 insertions(+), 182 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 84e6d17..2647a63 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -7,7 +7,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_spinning_wheel/flutter_spinning_wheel.dart'; void main() { - SystemChrome.setEnabledSystemUIOverlays([]); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); runApp(MyApp()); } @@ -62,11 +62,13 @@ class MyHomePage extends StatelessWidget { } Widget buildNavigationButton({String text, Function onPressedFn}) { - return FlatButton( - color: Color.fromRGBO(255, 255, 255, 0.3), - textColor: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50.0), + return TextButton( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all(Color.fromRGBO(255, 255, 255, 0.3)), + foregroundColor: MaterialStateProperty.all(Colors.white), + shape: MaterialStateProperty.all(RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50.0), + )), ), onPressed: onPressedFn, child: Text( @@ -263,7 +265,7 @@ class Roulette extends StatelessWidget { builder: (context, snapshot) => snapshot.hasData ? RouletteScore(snapshot.data) : Container(), ), SizedBox(height: 30), - new RaisedButton( + new ElevatedButton( child: new Text("Start"), onPressed: () => _spinController.spin(_generateRandomVelocity()), ) diff --git a/example/pubspec.lock b/example/pubspec.lock index 5fff573..24ff737 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,51 +5,50 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.10.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: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.2.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: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -67,34 +66,46 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" + source: hosted + version: "0.6.5" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.8.2" sky_engine: dependency: transitive description: flutter @@ -104,50 +115,57 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.1" 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: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.9" + version: "0.4.16" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" sdks: - dart: ">=2.17.0-0 <3.0.0" + dart: ">=2.18.0 <3.0.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 892873e..e88e199 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -4,7 +4,7 @@ description: A new Flutter project. version: 1.0.0+1 environment: - sdk: ">=2.3.0 <3.0.0" + sdk: ">=2.12.0 <3.0.0" dependencies: flutter: diff --git a/lib/src/pie.dart b/lib/src/pie.dart index 167f2f6..87b1b3a 100644 --- a/lib/src/pie.dart +++ b/lib/src/pie.dart @@ -6,13 +6,13 @@ import 'package:flutter/widgets.dart'; class Pie extends StatelessWidget { final List children; - const Pie({Key key, this.children}) : super(key: key); + const Pie({Key? key, required this.children}) : super(key: key); @override Widget build(BuildContext context) { return LayoutBuilder(builder: (context, consts) { - final emptyPie = (children?.length ?? 0) == 0; - final hasPieces = (children?.length ?? 0) > 1; + final emptyPie = (children.length) == 0; + final hasPieces = (children.length) > 1; final size = math.min(consts.maxWidth, consts.maxHeight); return Center( child: Container( @@ -52,8 +52,8 @@ class PiePiece extends StatelessWidget { final int pieces; const PiePiece({ - Key key, - this.child, + Key? key, + required this.child, this.pieces = 2, }) : super(key: key); diff --git a/lib/src/spinning_wheel.dart b/lib/src/spinning_wheel.dart index 5cbb599..a14ee01 100644 --- a/lib/src/spinning_wheel.dart +++ b/lib/src/spinning_wheel.dart @@ -39,49 +39,49 @@ class SpinningWheel extends StatefulWidget { final bool canInteractWhileSpinning; /// will be rendered on top of the wheel and can be used to show a selector - final Image secondaryImage; + final Image? secondaryImage; /// x dimension for the secondaty image, if provided /// if provided, has to be smaller than widget height - final double secondaryImageHeight; + final double? secondaryImageHeight; /// y dimension for the secondary image, if provided /// if provided, has to be smaller than widget width - final double secondaryImageWidth; + final double? secondaryImageWidth; /// can be used to fine tune the position for the secondary image, otherwise it will be centered - final double secondaryImageTop; + final double? secondaryImageTop; /// can be used to fine tune the position for the secondary image, otherwise it will be centered - final double secondaryImageLeft; + final double? secondaryImageLeft; /// callback function to be executed when the wheel selection changes - final SpinningWheelCallback onUpdate; + final SpinningWheelCallback? onUpdate; /// callback function to be executed when the animation stops - final SpinningWheelCallback onEnd; + final SpinningWheelCallback? onEnd; /// Stream used to trigger an animation /// if triggered in an animation it will stop it, unless canInteractWhileSpinning is false /// the parameter is a double for pixelsPerSecond in axis Y, which defaults to 8000.0 as a medium-high velocity - final SpinningWheelController controller; + final SpinningWheelController? controller; SpinningWheel.custom({ - @required List children, - @required double width, - @required double height, - SpinningWheelController controller, - double initialSpinAngle: 0.0, - double spinResistance: 0.5, - bool canInteractWhileSpinning: true, - Image secondaryImage, - double secondaryImageHeight, - double secondaryImageWidth, - double secondaryImageTop, - double secondaryImageLeft, - SpinningWheelCallback onUpdate, - SpinningWheelCallback onEnd, + required List children, + required double width, + required double height, + SpinningWheelController? controller, + double initialSpinAngle = 0.0, + double spinResistance = 0.5, + bool? canInteractWhileSpinning, + Image? secondaryImage, + double? secondaryImageHeight, + double? secondaryImageWidth, + double? secondaryImageTop, + double? secondaryImageLeft, + SpinningWheelCallback? onUpdate, + SpinningWheelCallback? onEnd, // Stream shouldStartOrStop, }) : this( child: Pie( @@ -90,10 +90,10 @@ class SpinningWheel extends StatefulWidget { controller: controller, width: width, height: height, - dividers: children?.length ?? 0, + dividers: children.length, initialSpinAngle: initialSpinAngle, spinResistance: spinResistance, - canInteractWhileSpinning: canInteractWhileSpinning, + canInteractWhileSpinning: canInteractWhileSpinning ?? true, secondaryImage: secondaryImage, secondaryImageHeight: secondaryImageHeight, secondaryImageWidth: secondaryImageWidth, @@ -105,14 +105,14 @@ class SpinningWheel extends StatefulWidget { ); SpinningWheel({ - @required this.child, - @required this.width, - @required this.height, - @required this.dividers, + required this.child, + required this.width, + required this.height, + required this.dividers, this.controller, - this.initialSpinAngle: 0.0, - this.spinResistance: 0.5, - this.canInteractWhileSpinning: true, + this.initialSpinAngle = 0.0, + this.spinResistance = 0.5, + this.canInteractWhileSpinning = true, this.secondaryImage, this.secondaryImageHeight, this.secondaryImageWidth, @@ -124,26 +124,26 @@ class SpinningWheel extends StatefulWidget { }) : assert(width > 0.0 && height > 0.0), assert(spinResistance > 0.0 && spinResistance <= 1.0), assert(initialSpinAngle >= 0.0 && initialSpinAngle <= (2 * pi)), - assert(secondaryImage == null || (secondaryImageHeight <= height && secondaryImageWidth <= width)); + assert(secondaryImage == null || secondaryImageHeight == null || secondaryImageWidth == null || (secondaryImageHeight <= height && secondaryImageWidth <= width)); @override _SpinningWheelState createState() => _SpinningWheelState(); } class _SpinningWheelState extends State with SingleTickerProviderStateMixin { - Animation _animation; - AnimationController _animationController; + late Animation _animation; + late AnimationController _animationController; // we need to store if has the widget behaves differently depending on the status // AnimationStatus _animationStatus = AnimationStatus.dismissed; // it helps calculating the velocity based on position and pixels per second velocity and angle - SpinVelocity _spinVelocity; - NonUniformCircularMotion _motion; + late SpinVelocity _spinVelocity; + late NonUniformCircularMotion _motion; // keeps the last local position on pan update // we need it onPanEnd to calculate in which cuadrant the user was when last dragged - Offset _localPositionOnPanUpdate; + Offset? _localPositionOnPanUpdate; // duration of the animation based on the initial velocity double _totalDuration = 0; @@ -152,28 +152,28 @@ class _SpinningWheelState extends State with SingleTickerProvider double _initialCircularVelocity = 0; // angle for each divider: 2*pi / numberOfDividers - double _dividerAngle; + late double _dividerAngle; // current (circular) distance (angle) covered during the animation double _currentDistance = 0; // initial spin angle when the wheels starts the animation - double _initialSpinAngle; + late double _initialSpinAngle; // dividider which is selected (positive y-coord) - int _currentDivider; + int? _currentDivider; // spining backwards - bool _isBackwards; + bool? _isBackwards; // if the user drags outside the wheel, won't be able to get back in - DateTime _offsetOutsideTimestamp; + DateTime? _offsetOutsideTimestamp; // will be used to do transformations between global and local - RenderBox _renderBox; + RenderBox? _renderBox; // subscription to the stream used to trigger an animation - StreamSubscription _subscription; + StreamSubscription? _subscription; @override void initState() { @@ -211,13 +211,13 @@ class _SpinningWheelState extends State with SingleTickerProvider } } - double get topSecondaryImage => widget.secondaryImageTop ?? (widget.height / 2) - (widget.secondaryImageHeight / 2); + double? get topSecondaryImage => widget.secondaryImageTop ?? (widget.secondaryImageHeight != null ? (widget.height / 2) - (widget.secondaryImageHeight! / 2) : null); - double get leftSecondaryImage => widget.secondaryImageLeft ?? (widget.width / 2) - (widget.secondaryImageWidth / 2); + double? get leftSecondaryImage => widget.secondaryImageLeft ?? (widget.secondaryImageWidth != null ? (widget.width / 2) - (widget.secondaryImageWidth! / 2) : null); - double get widthSecondaryImage => widget.secondaryImageWidth ?? widget.width; + double? get widthSecondaryImage => widget.secondaryImageWidth ?? widget.width; - double get heightSecondaryImage => widget.secondaryImageHeight ?? widget.height; + double? get heightSecondaryImage => widget.secondaryImageHeight ?? widget.height; @override Widget build(BuildContext context) { @@ -237,7 +237,7 @@ class _SpinningWheelState extends State with SingleTickerProvider child: widget.child, builder: (context, child) { _updateAnimationValues(); - if (widget.onUpdate != null) widget.onUpdate(_currentDivider); + if (widget.onUpdate != null && _currentDivider != null) widget.onUpdate!(_currentDivider!); return Transform.rotate( angle: _initialSpinAngle + _currentDistance, child: child, @@ -266,9 +266,12 @@ class _SpinningWheelState extends State with SingleTickerProvider // transforms from global coordinates to local and store the value void _updateLocalPosition(Offset position) { if (_renderBox == null) { - _renderBox = context.findRenderObject(); + final renderObject = context.findRenderObject(); + if (renderObject is RenderBox) { + _renderBox = renderObject; + } } - _localPositionOnPanUpdate = _renderBox.globalToLocal(position); + _localPositionOnPanUpdate = _renderBox?.globalToLocal(position); } /// returns true if (x,y) is outside the boundaries from size @@ -280,13 +283,13 @@ class _SpinningWheelState extends State with SingleTickerProvider // calculate total distance covered var currentTime = _totalDuration * _animation.value; _currentDistance = _motion.distance(_initialCircularVelocity, currentTime); - if (_isBackwards) { + if (_isBackwards == true) { _currentDistance = -_currentDistance; } } // calculate current divider selected var modulo = _motion.modulo(_currentDistance + _initialSpinAngle); - _currentDivider = widget.dividers - (modulo ~/ _dividerAngle); + _currentDivider = (widget.dividers - (modulo ~/ _dividerAngle)).toInt(); if (_animationController.isCompleted) { _initialSpinAngle = modulo; _currentDistance = 0; @@ -301,10 +304,10 @@ class _SpinningWheelState extends State with SingleTickerProvider _updateLocalPosition(details.globalPosition); - if (_contains(_localPositionOnPanUpdate)) { + if (_localPositionOnPanUpdate != null && _contains(_localPositionOnPanUpdate!)) { // we need to update the rotation // so, calculate the new rotation angle and rebuild the widget - var angle = _spinVelocity.offsetToRadians(_localPositionOnPanUpdate); + var angle = _spinVelocity.offsetToRadians(_localPositionOnPanUpdate!); setState(() { // initialSpinAngle will be added later on build _currentDistance = angle - _initialSpinAngle; @@ -323,14 +326,14 @@ class _SpinningWheelState extends State with SingleTickerProvider _animationController.stop(); _animationController.reset(); - if (widget.onEnd != null) widget.onEnd(_currentDivider); + if (widget.onEnd != null && _currentDivider != null) widget.onEnd!(_currentDivider!); } void _startAnimationOnPanEnd(DragEndDetails details) { if (!_userCanInteract) return; if (_offsetOutsideTimestamp != null) { - var difference = DateTime.now().difference(_offsetOutsideTimestamp); + var difference = DateTime.now().difference(_offsetOutsideTimestamp!); _offsetOutsideTimestamp = null; // if more than 50 seconds passed since user dragged outside the boundaries, dont start animation if (difference.inMilliseconds > 50) return; @@ -343,7 +346,7 @@ class _SpinningWheelState extends State with SingleTickerProvider } void _startAnimation(Offset pixelsPerSecond) { - var velocity = _spinVelocity.getVelocity(_localPositionOnPanUpdate, pixelsPerSecond); + double velocity = _localPositionOnPanUpdate != null ? _spinVelocity.getVelocity(_localPositionOnPanUpdate!, pixelsPerSecond) : 0; _localPositionOnPanUpdate = null; _isBackwards = velocity < 0; @@ -358,40 +361,41 @@ class _SpinningWheelState extends State with SingleTickerProvider dispose() { _animationController.dispose(); - if (_subscription != null) { - _subscription.cancel(); - } + _subscription?.cancel(); super.dispose(); } } class SpinningWheelController { - _SpinningWheelState _state; + _SpinningWheelState? _state; bool get _isAttached => _state != null; - bool get isSpinning => _isAttached && _state._animationController.isAnimating; + bool get isSpinning => _isAttached && (_state?._animationController.isAnimating ?? false); void _attach(_SpinningWheelState state) { _state = state; } - void spin(double velocity, {int dividerIndex}) { + void spin(double velocity, {int? dividerIndex}) { if (!_isAttached) return; - if (_state._animationController.isAnimating) stop(); - if (dividerIndex != null && dividerIndex >= 1 && dividerIndex <= _state.widget.dividers) { - final dividerSpinAngle = - dividerIndex == _state.widget.dividers ? 0 : (((_state.widget.dividers - dividerIndex) / _state.widget.dividers) * pi * 2); - final dividerInternalAngle = (pi * 2 / _state.widget.dividers) * max(0.02, min(0.98, Random().nextDouble())); - _state._currentDistance = 0; - _state._initialSpinAngle = dividerSpinAngle + dividerInternalAngle; + if (_state?._animationController.isAnimating ?? false) stop(); + if (_state != null) { + final state = _state!; + if (dividerIndex != null && dividerIndex >= 1 && dividerIndex <= state.widget.dividers) { + final dividerSpinAngle = + dividerIndex == state.widget.dividers ? 0 : (((state.widget.dividers - dividerIndex) / state.widget.dividers) * pi * 2); + final dividerInternalAngle = (pi * 2 / state.widget.dividers) * max(0.02, min(0.98, Random().nextDouble())); + _state?._currentDistance = 0; + _state?._initialSpinAngle = dividerSpinAngle + dividerInternalAngle; + } } - _state._startOrStop(velocity); + _state?._startOrStop(velocity); } void stop() { if (!_isAttached) return; - if (!_state._animationController.isAnimating) return; - _state._stopAnimation(); + if (!(_state?._animationController.isAnimating ?? false)) return; + _state?._stopAnimation(); } } diff --git a/lib/src/utils.dart b/lib/src/utils.dart index e948d9b..f25b123 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -1,8 +1,6 @@ import 'dart:math'; import 'dart:ui'; -import 'package:meta/meta.dart'; - const Map cuadrants = const { 1: Offset(0.5, 0.5), 2: Offset(-0.5, 0.5), @@ -21,12 +19,16 @@ class SpinVelocity { double get width_0_5 => width / 2; double get height_0_5 => height / 2; - SpinVelocity({@required this.height, @required this.width}); + SpinVelocity({required this.height, required this.width}); double getVelocity(Offset position, Offset pps) { - var cuadrantIndex = _getCuadrantFromOffset(position); - var cuadrant = cuadrants[cuadrantIndex]; - return (cuadrant.dx * pps.dx) + (cuadrant.dy * pps.dy); + final cuadrantIndex = _getCuadrantFromOffset(position); + final cuadrant = cuadrants[cuadrantIndex]; + if (cuadrant != null) { + return (cuadrant.dx * pps.dx) + (cuadrant.dy * pps.dy); + } else { + return 0; + } } /// transforms (x,y) into radians assuming we start at positive y axis as 0 @@ -49,7 +51,7 @@ class SpinVelocity { class NonUniformCircularMotion { final double resistance; - NonUniformCircularMotion({@required this.resistance}); + NonUniformCircularMotion({required this.resistance}); /// returns the acceleration based on the resistance provided in the constructor double get acceleration => resistance * -7 * pi; diff --git a/pubspec.lock b/pubspec.lock index f4c1e9c..7a7d0e5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,51 +5,50 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.10.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: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.2.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: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -60,34 +59,46 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" + source: hosted + version: "0.6.5" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "0.2.0" meta: - dependency: "direct main" + dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.8.2" sky_engine: dependency: transitive description: flutter @@ -97,50 +108,57 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.1" 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: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.9" + version: "0.4.16" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" sdks: - dart: ">=2.17.0-0 <3.0.0" + dart: ">=2.18.0 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index a27deb8..c4dd686 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,14 +6,12 @@ repository: https://github.com/davidanaya/flutter-spinning-wheel issue_tracker: https://github.com/davidanaya/flutter-spinning-wheel/issues environment: - sdk: ">=2.11.0 <3.0.0" + sdk: ">=2.12.0 <3.0.0" dependencies: flutter: sdk: flutter - meta: ^1.1.6 - dev_dependencies: flutter_test: sdk: flutter