diff --git a/.gitignore b/.gitignore index 4421792..9329491 100644 --- a/.gitignore +++ b/.gitignore @@ -63,9 +63,12 @@ build/ **/ios/ServiceDefinitions.json **/ios/Runner/GeneratedPluginRegistrant.* +**/example/ios/Flutter/flutter_export_environment.sh + # Exceptions to above rules. !**/ios/**/default.mode1v3 !**/ios/**/default.mode2v3 !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +pubspec_overrides.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index caf9712..4edf162 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,41 @@ +## 1.1.0 + + - Graduate package to a stable release. See pre-releases prior to this version for changelog entries. + +## 1.1.0-dev.6 + + - **FEAT**: Cleaning up for melos publish. + - **FEAT**: bumping version. + +## 1.1.0-dev.5 + + - **FEAT**: Cleaning up for melos publish. + - **FEAT**: bumping version. + +## 1.1.0-dev.4 + + - **FEAT**: Cleaning up for melos publish. + - **FEAT**: bumping version. + +## 1.1.0-dev.3 + + - **FEAT**: Cleaning up for melos publish. + - **FEAT**: bumping version. + +## 1.1.0-dev.2 + + - **FEAT**: Cleaning up for melos publish. + - **FEAT**: bumping version. + +## 1.1.0-dev.1 + + - **FEAT**: Cleaning up for melos publish. + - **FEAT**: bumping version. + +## 1.1.0-dev.0 + + - **FEAT**: bumping version. + ## 1.0.2 * Null safety * Changed the children count requirement to 1 from 2 diff --git a/example/ios/Flutter/Flutter.podspec b/example/ios/Flutter/Flutter.podspec deleted file mode 100644 index 5ca3041..0000000 --- a/example/ios/Flutter/Flutter.podspec +++ /dev/null @@ -1,18 +0,0 @@ -# -# NOTE: This podspec is NOT to be published. It is only used as a local source! -# - -Pod::Spec.new do |s| - s.name = 'Flutter' - s.version = '1.0.0' - s.summary = 'High-performance, high-fidelity mobile apps.' - s.description = <<-DESC -Flutter provides an easy and productive way to build and deploy high-performance mobile apps for Android and iOS. - DESC - s.homepage = 'https://flutter.io' - s.license = { :type => 'MIT' } - s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } - s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } - s.ios.deployment_target = '8.0' - s.vendored_frameworks = 'Flutter.framework' -end diff --git a/example/ios/Flutter/flutter_export_environment.sh b/example/ios/Flutter/flutter_export_environment.sh deleted file mode 100755 index ab579d2..0000000 --- a/example/ios/Flutter/flutter_export_environment.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# This is a generated file; do not edit or check into version control. -export "FLUTTER_ROOT=/Library/SDKs/flutter" -export "FLUTTER_APPLICATION_PATH=/Users/mariano/Dev/OpenSource/fab-circular-menu/example" -export "FLUTTER_TARGET=lib/main.dart" -export "FLUTTER_BUILD_DIR=build" -export "SYMROOT=${SOURCE_ROOT}/../build/ios" -export "FLUTTER_BUILD_NAME=1.0.0" -export "FLUTTER_BUILD_NUMBER=1" -export "DART_OBFUSCATION=false" -export "TRACK_WIDGET_CREATION=false" -export "TREE_SHAKE_ICONS=false" -export "PACKAGE_CONFIG=.packages" diff --git a/example/lib/main.dart b/example/lib/main.dart index 22779e6..b2b299c 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -6,7 +6,6 @@ void main() { } class MyApp extends StatelessWidget { - final GlobalKey fabKey = GlobalKey(); @override @@ -19,17 +18,20 @@ class MyApp extends StatelessWidget { body: Container( color: const Color(0xFF192A56), child: Center( - child: RaisedButton( + child: ElevatedButton( onPressed: () { // The menu can be handled programatically using a key - if (fabKey.currentState.isOpen) { - fabKey.currentState.close(); + if (fabKey.currentState!.isOpen) { + fabKey.currentState!.close(); } else { - fabKey.currentState.open(); + fabKey.currentState!.open(); } }, - color: Colors.white, - child: Text('Toggle menu programatically', style: TextStyle(color: primaryColor)), + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all(Colors.white), + ), + child: Text('Toggle menu programatically', + style: TextStyle(color: primaryColor)), ), ), ), @@ -56,7 +58,8 @@ class MyApp extends StatelessWidget { animationDuration: const Duration(milliseconds: 800), animationCurve: Curves.easeInOutCirc, onDisplayChange: (isOpen) { - _showSnackBar(context, "The menu is ${isOpen ? "open" : "closed"}"); + _showSnackBar( + context, "The menu is ${isOpen ? "open" : "closed"}"); }, children: [ RawMaterialButton( @@ -85,8 +88,9 @@ class MyApp extends StatelessWidget { ), RawMaterialButton( onPressed: () { - _showSnackBar(context, "You pressed 4. This one closes the menu on tap"); - fabKey.currentState.close(); + _showSnackBar(context, + "You pressed 4. This one closes the menu on tap"); + fabKey.currentState!.close(); }, shape: CircleBorder(), padding: const EdgeInsets.all(24.0), @@ -100,12 +104,9 @@ class MyApp extends StatelessWidget { } void _showSnackBar(BuildContext context, String message) { - Scaffold.of(context).showSnackBar( - SnackBar( + Scaffold.of(context).showSnackBar(SnackBar( content: Text(message), duration: const Duration(milliseconds: 1000), - ) - ); + )); } - } diff --git a/example/pubspec.lock b/example/pubspec.lock index 9b85a3e..4e759fe 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -2,68 +2,68 @@ # See https://dart.dev/tools/pub/glossary#lockfile packages: async: - dependency: transitive + dependency: "direct overridden" 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 + dependency: "direct overridden" description: name: collection - url: "https://pub.dartlang.org" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "1.0.5" fab_circular_menu: dependency: "direct main" description: - path: ".." - relative: true + path: "/Users/ericm/aesthetika/checkout/SunnyApp/fab-circular-menu" + relative: false source: path - version: "1.0.1" + version: "1.1.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 @@ -74,27 +74,46 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: "direct overridden" + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.10" - meta: + version: "0.12.15" + material_color_utilities: dependency: transitive + description: + name: material_color_utilities + sha256: "586678f20e112219ed0f73215f01bcdf1d769824ba2ebae45ad918a9bfde9bdb" + url: "https://pub.dev" + source: hosted + version: "0.3.0" + meta: + dependency: "direct overridden" 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 + dependency: "direct overridden" 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 @@ -104,57 +123,57 @@ 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: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 + url: "https://pub.dev" source: hosted - version: "0.2.19" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" + version: "0.5.2" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=3.0.0-0 <4.0.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 076f3d1..0fbd74f 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,23 +1,16 @@ -name: example -description: FAB Circular Menu Example - +name: fab_circular_menu_example version: 1.0.0+1 - -environment: - sdk: ">=2.1.0 <3.0.0" - -dependencies: - flutter: +description: FAB Circular Menu Example +environment: + sdk: '>=2.15.0 <3.0.0' +dependencies: + cupertino_icons: ^1.0.5 + flutter: sdk: flutter - - cupertino_icons: ^0.1.2 - fab_circular_menu: - path: ./../ - -dev_dependencies: - flutter_test: + fab_circular_menu: + path: /Users/ericm/aesthetika/checkout/SunnyApp/fab-circular-menu +dev_dependencies: + flutter_test: sdk: flutter - -flutter: - - uses-material-design: true \ No newline at end of file +flutter: + uses-material-design: true diff --git a/lib/fab_circular_menu.dart b/lib/fab_circular_menu.dart index c68f5c2..753786d 100644 --- a/lib/fab_circular_menu.dart +++ b/lib/fab_circular_menu.dart @@ -1,4 +1,6 @@ import 'dart:math'; + +import 'package:fab_circular_menu/stack_with_all_children_receive_events.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:vector_math/vector_math.dart' as vector; @@ -6,11 +8,20 @@ import 'package:vector_math/vector_math.dart' as vector; typedef DisplayChange = void Function(bool isOpen); class FabCircularMenu extends StatefulWidget { + /// When used as the floatingActionButton in a Scaffold, there is a default margin + /// applied that needs to be removed. If this button is placed manually, this offset + /// can cause issues. Set this value to false to _not_ attempt to remove the default + /// FAB margin + final bool removeDefaultFabMargin; + final List children; final Alignment alignment; final Color? ringColor; final double? ringDiameter; final double? ringWidth; + final Key? buttonKey; + final double rangeStartOffset; + final double rangeEndOffset; final double fabSize; final double fabElevation; final Color? fabColor; @@ -21,22 +32,32 @@ class FabCircularMenu extends StatefulWidget { final Widget fabCloseIcon; final ShapeBorder? fabIconBorder; final EdgeInsets fabMargin; + final Offset menuOffset; final Duration animationDuration; final Curve animationCurve; final DisplayChange? onDisplayChange; + /// Disables the menu from appearing, in favor of a simple onTap handler + final VoidCallback? onFabTap; + FabCircularMenu( {Key? key, - this.alignment = Alignment.bottomRight, + this.buttonKey, + this.alignment = Alignment.bottomCenter, this.ringColor, this.ringDiameter, this.ringWidth, + this.onFabTap, this.fabSize = 64.0, + this.menuOffset = Offset.zero, this.fabElevation = 8.0, this.fabColor, this.fabOpenColor, + this.removeDefaultFabMargin = true, this.fabCloseColor, this.fabIconBorder, + this.rangeStartOffset = 0.0, + this.rangeEndOffset = 0.0, this.fabChild, this.fabOpenIcon = const Icon(Icons.menu), this.fabCloseIcon = const Icon(Icons.close), @@ -94,18 +115,18 @@ class FabCircularMenuState extends State curve: Interval(0.0, 0.4, curve: widget.animationCurve)); _scaleAnimation = Tween(begin: 0.0, end: 1.0) .animate(_scaleCurve as Animation) - ..addListener(() { - setState(() {}); - }); + ..addListener(() { + setState(() {}); + }); _rotateCurve = CurvedAnimation( parent: _animationController, curve: Interval(0.4, 1.0, curve: widget.animationCurve)); _rotateAnimation = Tween(begin: 0.5, end: 1.0) .animate(_rotateCurve as Animation) - ..addListener(() { - setState(() {}); - }); + ..addListener(() { + setState(() {}); + }); } @override @@ -129,10 +150,13 @@ class FabCircularMenuState extends State } return Container( - margin: widget.fabMargin, + height: _screenHeight, + width: _screenWidth, // Removes the default FAB margin - transform: Matrix4.translationValues(16.0, 16.0, 0.0), - child: Stack( + transform: widget.removeDefaultFabMargin + ? Matrix4.translationValues(16.0, 16.0, 0.0) + : null, + child: StackWithAllChildrenReceiveEvents( alignment: widget.alignment, children: [ // Ring @@ -180,19 +204,26 @@ class FabCircularMenuState extends State // FAB Container( + margin: widget.fabMargin, width: widget.fabSize, height: widget.fabSize, child: RawMaterialButton( + key: widget.buttonKey, fillColor: _colorAnimation!.value, shape: _fabIconBorder, elevation: widget.fabElevation, onPressed: () { - if (_isAnimating) return; - - if (_isOpen) { - close(); + if (widget.onFabTap != null) { + widget.onFabTap!(); + return; } else { - open(); + if (_isAnimating) return; + + if (_isOpen) { + close(); + } else { + open(); + } } }, child: Center( @@ -216,9 +247,13 @@ class FabCircularMenuState extends State } else if (widget.alignment.y == 0) { angleFix = -45.0 * _directionX.abs(); } + angleFix += widget.rangeStartOffset; - final angle = - vector.radians(90.0 / (widget.children.length - 1) * index + angleFix); + final angle = vector.radians( + (90.0 - widget.rangeStartOffset - widget.rangeEndOffset) / + (widget.children.length - 1) * + index + + angleFix); return Transform( transform: Matrix4.translationValues( @@ -237,7 +272,7 @@ class FabCircularMenuState extends State } void _calculateProps() { - _ringColor = widget.ringColor ?? Theme.of(context).accentColor; + _ringColor = widget.ringColor ?? Theme.of(context).colorScheme.secondary; _fabColor = widget.fabColor ?? Theme.of(context).primaryColor; _fabOpenColor = widget.fabOpenColor ?? _fabColor; _fabCloseColor = widget.fabCloseColor ?? _fabColor; @@ -251,10 +286,12 @@ class FabCircularMenuState extends State _marginV = (widget.fabMargin.top + widget.fabMargin.bottom) / 2; _directionX = widget.alignment.x == 0 ? 1 : 1 * widget.alignment.x.sign; _directionY = widget.alignment.y == 0 ? 1 : 1 * widget.alignment.y.sign; - _translationX = - ((_screenWidth - widget.fabSize) / 2 - _marginH) * widget.alignment.x; - _translationY = - ((_screenHeight - widget.fabSize) / 2 - _marginV) * widget.alignment.y; + _translationX = (((_screenWidth - widget.fabSize) / 2 - _marginH) * + widget.alignment.x) + + widget.menuOffset.dx; + _translationY = (((_screenHeight - widget.fabSize) / 2 - _marginV) * + widget.alignment.y) + + widget.menuOffset.dy; if (_colorAnimation == null || !kReleaseMode) { _colorCurve = CurvedAnimation( @@ -266,9 +303,9 @@ class FabCircularMenuState extends State )); _colorAnimation = ColorTween(begin: _fabCloseColor, end: _fabOpenColor) .animate(_colorCurve as Animation) - ..addListener(() { - setState(() {}); - }); + ..addListener(() { + setState(() {}); + }); } } @@ -301,7 +338,10 @@ class _RingPainter extends CustomPainter { final double? width; final Color? color; - _RingPainter({required this.width, this.color}); + _RingPainter({ + required this.width, + this.color, + }); @override void paint(Canvas canvas, Size size) { @@ -311,12 +351,13 @@ class _RingPainter extends CustomPainter { ..strokeWidth = size.width < width! ? size.width : width!; canvas.drawArc( - Rect.fromLTWH( - width! / 2, width! / 2, size.width - width!, size.height - width!), - 0.0, - 2 * pi, - false, - paint); + Rect.fromLTWH( + width! / 2, width! / 2, size.width - width!, size.height - width!), + 0.0, + 2 * pi, + false, + paint, + ); } @override diff --git a/lib/stack_with_all_children_receive_events.dart b/lib/stack_with_all_children_receive_events.dart new file mode 100644 index 0000000..a7edc49 --- /dev/null +++ b/lib/stack_with_all_children_receive_events.dart @@ -0,0 +1,94 @@ +import 'package:flutter/widgets.dart'; +import 'package:flutter/rendering.dart'; + +/// Passes all events to all children of the stack. The FAB was having issues +/// where the padding on the button was blocking the circular items on the edge +class StackWithAllChildrenReceiveEvents extends Stack { + StackWithAllChildrenReceiveEvents({ + Key? key, + AlignmentGeometry alignment = AlignmentDirectional.topStart, + TextDirection textDirection = TextDirection.ltr, + StackFit fit = StackFit.loose, + List children = const [], + Clip clipBehavior = Clip.hardEdge, + }) : super( + key: key, + alignment: alignment, + textDirection: textDirection, + fit: fit, + clipBehavior: clipBehavior, + children: children, + ); + + @override + RenderStackWithAllChildrenReceiveEvents createRenderObject( + BuildContext context) { + return RenderStackWithAllChildrenReceiveEvents( + alignment: alignment, + textDirection: textDirection ?? Directionality.of(context), + fit: fit, + clipBehavior: clipBehavior, + ); + // return RenderStackWithAllChildrenReceiveEvents( + // alignment: alignment, + // textDirection: textDirection ?? Directionality.of(context), + // fit: fit, + // overflow: overflow, + // ); + } + + @override + void updateRenderObject(BuildContext context, + RenderStackWithAllChildrenReceiveEvents renderObject) { + renderObject + ..alignment = alignment + ..textDirection = textDirection ?? Directionality.of(context) + ..fit = fit + ..clipBehavior = clipBehavior; + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + .add(DiagnosticsProperty('alignment', alignment)); + properties.add(EnumProperty('textDirection', textDirection, + defaultValue: null)); + properties.add(EnumProperty('fit', fit)); + properties.add(EnumProperty('clipBehavior', clipBehavior)); + } +} + +class RenderStackWithAllChildrenReceiveEvents extends RenderStack { + RenderStackWithAllChildrenReceiveEvents({ + List children = const [], + AlignmentGeometry alignment = AlignmentDirectional.topStart, + TextDirection? textDirection, + StackFit fit = StackFit.loose, + Clip clipBehavior = Clip.hardEdge, + }) : super( + alignment: alignment, + textDirection: textDirection, + fit: fit, + clipBehavior: clipBehavior, + ); + + @override + bool defaultHitTestChildren(HitTestResult result, + {required Offset position}) { + // the x, y parameters have the top left of the node's box as the origin + var child = lastChild; + while (child != null) { + StackParentData childParentData = child.parentData as StackParentData; + child.hitTest(result as BoxHitTestResult, + position: position - childParentData.offset); + child = childParentData.previousSibling; + } + return false; + } + + @override + bool hitTestChildren(HitTestResult result, {required Offset position}) { + return defaultHitTestChildren(result, position: position); + } +} diff --git a/pubspec.lock b/pubspec.lock index 41fef42..33b3129 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -2,54 +2,53 @@ # See https://dart.dev/tools/pub/glossary#lockfile packages: async: - dependency: transitive + dependency: "direct overridden" 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" - source: hosted - version: "1.1.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" 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 + dependency: "direct overridden" description: name: collection - url: "https://pub.dartlang.org" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.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" flutter: dependency: "direct main" description: flutter @@ -60,27 +59,46 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: "direct overridden" + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.10" - meta: + version: "0.12.15" + material_color_utilities: dependency: transitive + description: + name: material_color_utilities + sha256: "586678f20e112219ed0f73215f01bcdf1d769824ba2ebae45ad918a9bfde9bdb" + url: "https://pub.dev" + source: hosted + version: "0.3.0" + meta: + dependency: "direct overridden" 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 + dependency: "direct overridden" 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 @@ -90,57 +108,57 @@ 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" - source: hosted - version: "0.2.19" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" + sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "0.5.2" vector_math: dependency: "direct main" description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=3.0.0-0 <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 9e0c16a..e36b5c4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,18 +1,15 @@ name: fab_circular_menu -description: A Flutter package to create a nice circular menu using a Floating Action Button. +version: 1.1.0 homepage: https://github.com/marianocordoba/fab-circular-menu -version: 1.0.2 - -environment: - sdk: '>=2.12.0 <3.0.0' - -dependencies: - flutter: - sdk: flutter +publish_to: https://dart.cloudsmith.io/edspuzzles/edspuzzle-public/ +description: A Flutter package to create a nice circular menu using a Floating Action Button. +environment: + sdk: '>=2.17.0 <3.0.0' +dependencies: vector_math: ^2.0.8 - -dev_dependencies: - flutter_test: + flutter: + sdk: flutter +dev_dependencies: + flutter_test: sdk: flutter - -flutter: +flutter: null