diff --git a/.github/workflows/flutter_analysis.yml b/.github/workflows/flutter_analysis.yml index 4a4b58ff..fba04aa4 100644 --- a/.github/workflows/flutter_analysis.yml +++ b/.github/workflows/flutter_analysis.yml @@ -34,7 +34,3 @@ jobs: - name: Analyze code run: flutter analyze --fatal-infos . - - - name: Test code - run: flutter test - diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 00000000..8c64e72e --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,19 @@ +name: Flutter Analysis +on: [pull_request, workflow_dispatch] + +jobs: + package-analysis: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Install Flutter + uses: subosito/flutter-action@v2 + with: + channel: stable + + - name: Install dependencies + run: flutter pub get + + - name: Test code + run: flutter test diff --git a/analysis_options.yaml b/analysis_options.yaml index d4a906dd..74448811 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -14,13 +14,23 @@ analyzer: dart_code_metrics: metrics: cyclomatic-complexity: 20 - number-of-parameters: 4 maximum-nesting-level: 5 metrics-exclude: - test/** - example/test/** rules: - prefer-trailing-comma + - double-literal-format + - prefer-first + - prefer-last + - prefer-immediate-return + - avoid-global-state + - always-remove-listener + - avoid-unnecessary-setstate + - avoid-wrapping-in-padding + - prefer-const-border-radius + - prefer-correct-edge-insets-constructor + - use-setstate-synchronously - member-ordering: alphabetize: false order: diff --git a/lib/src/buttons/back_button.dart b/lib/src/buttons/back_button.dart index 5bce067b..605356a4 100644 --- a/lib/src/buttons/back_button.dart +++ b/lib/src/buttons/back_button.dart @@ -196,7 +196,7 @@ class MacosBackButtonState extends State : _isHovered ? hoverColor : fillColor, - borderRadius: BorderRadius.circular(7), + borderRadius: const BorderRadius.all(Radius.circular(7)), ), child: Icon( CupertinoIcons.back, diff --git a/lib/src/buttons/checkbox.dart b/lib/src/buttons/checkbox.dart index 93e0b1c0..1ad46d62 100644 --- a/lib/src/buttons/checkbox.dart +++ b/lib/src/buttons/checkbox.dart @@ -106,7 +106,7 @@ class MacosCheckbox extends StatelessWidget { : activeColor ?? theme.primaryColor, context, ), - borderRadius: BorderRadius.circular(4.0), + borderRadius: const BorderRadius.all(Radius.circular(4.0)), ) : BoxDecoration( color: isLight ? null : CupertinoColors.tertiaryLabel, @@ -118,7 +118,7 @@ class MacosCheckbox extends StatelessWidget { context, ), ), - borderRadius: BorderRadius.circular(4.0), + borderRadius: const BorderRadius.all(Radius.circular(4.0)), ), child: Icon( isDisabled || value == false diff --git a/lib/src/buttons/disclosure_button.dart b/lib/src/buttons/disclosure_button.dart index 3a8a3d6b..5cef6e0e 100644 --- a/lib/src/buttons/disclosure_button.dart +++ b/lib/src/buttons/disclosure_button.dart @@ -177,7 +177,7 @@ class MacosDisclosureButtonState extends State ? const MacosColor(0xff3C383C) : const MacosColor(0xffE5E5E5) : fillColor, - borderRadius: BorderRadius.circular(7), + borderRadius: const BorderRadius.all(Radius.circular(7)), ), child: RotatedBox( quarterTurns: widget.isPressed ? 1 : 3, diff --git a/lib/src/buttons/icon_button.dart b/lib/src/buttons/icon_button.dart index 9b339aa7..88e8ef20 100644 --- a/lib/src/buttons/icon_button.dart +++ b/lib/src/buttons/icon_button.dart @@ -253,7 +253,7 @@ class MacosIconButtonState extends State borderRadius: widget.borderRadius != null ? widget.borderRadius : widget.shape == BoxShape.rectangle - ? BorderRadius.circular(7.0) + ? const BorderRadius.all(Radius.circular(7)) : null, color: !enabled ? disabledColor diff --git a/lib/src/buttons/popup_button.dart b/lib/src/buttons/popup_button.dart index a08cb113..8158e63c 100644 --- a/lib/src/buttons/popup_button.dart +++ b/lib/src/buttons/popup_button.dart @@ -1091,8 +1091,7 @@ class _MacosPopupButtonState extends State> void _handleTap() { final TextDirection? textDirection = Directionality.maybeOf(context); - const EdgeInsetsGeometry menuMargin = - EdgeInsetsDirectional.only(start: 4.0, end: 4.0); + const EdgeInsetsGeometry menuMargin = EdgeInsets.symmetric(horizontal: 4.0); final List<_MenuItem> menuItems = <_MenuItem>[ for (int index = 0; index < widget.items!.length; index += 1) @@ -1239,7 +1238,7 @@ class _MacosPopupButtonState extends State> boxShadow: [ BoxShadow( color: buttonStyles.borderColor, - offset: const Offset(0, .5), + offset: const Offset(0, 0.5), blurRadius: 0.2, spreadRadius: 0, ), @@ -1251,7 +1250,7 @@ class _MacosPopupButtonState extends State> ), borderRadius: _kBorderRadius, ), - padding: const EdgeInsets.fromLTRB(8.0, 0.0, 2.0, 0.0), + padding: const EdgeInsets.only(left: 8.0, right: 2.0), height: _kPopupButtonHeight, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, diff --git a/lib/src/buttons/pulldown_button.dart b/lib/src/buttons/pulldown_button.dart index dbe7e0d1..51b783f4 100644 --- a/lib/src/buttons/pulldown_button.dart +++ b/lib/src/buttons/pulldown_button.dart @@ -808,7 +808,7 @@ class _MacosPulldownButtonState extends State void _handleTap() { final TextDirection? textDirection = Directionality.maybeOf(context); const EdgeInsetsGeometry menuMargin = - EdgeInsetsDirectional.only(start: 4.0, end: 4.0); + EdgeInsets.symmetric(horizontal: 4.0); final List<_MenuItem> menuItems = <_MenuItem>[ for (int index = 0; index < widget.items!.length; index += 1) @@ -904,7 +904,7 @@ class _MacosPulldownButtonState extends State boxShadow: [ BoxShadow( color: buttonStyles.borderColor, - offset: const Offset(0, .5), + offset: const Offset(0, 0.5), blurRadius: 0.2, spreadRadius: 0, ), @@ -913,7 +913,7 @@ class _MacosPulldownButtonState extends State color: buttonStyles.bgColor, borderRadius: borderRadius, ), - padding: const EdgeInsets.fromLTRB(8.0, 0.0, 2.0, 0.0), + padding: const EdgeInsets.only(left: 8.0, right: 2.0), height: buttonHeight, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, diff --git a/lib/src/buttons/segmented_control.dart b/lib/src/buttons/segmented_control.dart index 411fd8d1..45f36539 100644 --- a/lib/src/buttons/segmented_control.dart +++ b/lib/src/buttons/segmented_control.dart @@ -54,8 +54,8 @@ class _MacosSegmentedControlState extends State { const Color(0xFFDBDCDE), const Color(0xFF4F5155), ), - offset: const Offset(0, .5), - spreadRadius: .5, + offset: const Offset(0, 0.5), + spreadRadius: 0.5, ), ], borderRadius: const BorderRadius.all( diff --git a/lib/src/buttons/toolbar/toolbar_icon_button.dart b/lib/src/buttons/toolbar/toolbar_icon_button.dart index 3d94a1f3..4b165a3d 100644 --- a/lib/src/buttons/toolbar/toolbar_icon_button.dart +++ b/lib/src/buttons/toolbar/toolbar_icon_button.dart @@ -77,7 +77,7 @@ class ToolBarIconButton extends ToolbarItem { if (showLabel) { iconButton = Padding( - padding: const EdgeInsets.fromLTRB(6.0, 6.0, 6.0, 0.0), + padding: const EdgeInsets.only(left: 6.0, top: 6.0, right: 6.0), child: Column( children: [ iconButton, diff --git a/lib/src/fields/text_field.dart b/lib/src/fields/text_field.dart index 9387b029..f3cf0888 100644 --- a/lib/src/fields/text_field.dart +++ b/lib/src/fields/text_field.dart @@ -358,7 +358,7 @@ class MacosTextField extends StatefulWidget { this.focusNode, this.decoration, this.focusedDecoration, - this.padding = const EdgeInsets.fromLTRB(2.0, 4.0, 2.0, 4.0), + this.padding = const EdgeInsets.symmetric(horizontal: 2.0, vertical: 4.0), this.placeholder, this.placeholderStyle = _kDefaultPlaceholderStyle, this.prefix, @@ -1157,6 +1157,7 @@ class _MacosTextFieldState extends State void dispose() { _focusNode?.dispose(); _controller?.dispose(); + _effectiveFocusNode.removeListener(_handleFocusChanged); super.dispose(); } diff --git a/lib/src/indicators/progress_indicators.dart b/lib/src/indicators/progress_indicators.dart index 9bc9196e..6fe47cd9 100644 --- a/lib/src/indicators/progress_indicators.dart +++ b/lib/src/indicators/progress_indicators.dart @@ -107,7 +107,7 @@ class _DeterminateCirclePainter extends CustomPainter { final Color? borderColor; static const double _twoPi = math.pi * 2.0; - static const double _epsilon = .001; + static const double _epsilon = 0.001; static const double _sweep = _twoPi - _epsilon; static const double _startAngle = -math.pi / 2.0; @@ -240,7 +240,7 @@ class _DeterminateBarPainter extends CustomPainter { void paint(Canvas canvas, Size size) { // Draw the background line canvas.drawRRect( - BorderRadius.circular(100).toRRect( + const BorderRadius.all(Radius.circular(100)).toRRect( Offset.zero & size, ), Paint() diff --git a/lib/src/indicators/slider.dart b/lib/src/indicators/slider.dart index 8a172c2e..9e5e7514 100644 --- a/lib/src/indicators/slider.dart +++ b/lib/src/indicators/slider.dart @@ -178,8 +178,9 @@ class MacosSlider extends StatelessWidget { backgroundColor, context, ), - borderRadius: - BorderRadius.circular(_kSliderBorderRadius), + borderRadius: const BorderRadius.all( + Radius.circular(_kSliderBorderRadius), + ), ), ), ), @@ -192,8 +193,9 @@ class MacosSlider extends StatelessWidget { width: width * _percentage, decoration: BoxDecoration( color: MacosDynamicColor.resolve(color, context), - borderRadius: - BorderRadius.circular(_kSliderBorderRadius), + borderRadius: const BorderRadius.all( + Radius.circular(_kSliderBorderRadius), + ), ), ), ), @@ -273,7 +275,8 @@ class _ContinuousThumb extends StatelessWidget { width: _kContinuousThumbSize, decoration: BoxDecoration( color: color, - borderRadius: BorderRadius.circular(_kContinuousThumbSize), + borderRadius: + const BorderRadius.all(Radius.circular(_kContinuousThumbSize)), boxShadow: const [ BoxShadow( color: Color.fromRGBO(0, 0, 0, 0.1), @@ -300,7 +303,9 @@ class _DiscreteThumb extends StatelessWidget { width: _kDiscreteThumbWidth, decoration: BoxDecoration( color: color, - borderRadius: BorderRadius.circular(_kDiscreteThumbBorderRadius), + borderRadius: const BorderRadius.all( + Radius.circular(_kDiscreteThumbBorderRadius), + ), boxShadow: const [ BoxShadow( color: Color.fromRGBO(0, 0, 0, 0.1), diff --git a/lib/src/layout/resizable_pane.dart b/lib/src/layout/resizable_pane.dart index 68ccfbed..b3f6b338 100644 --- a/lib/src/layout/resizable_pane.dart +++ b/lib/src/layout/resizable_pane.dart @@ -238,10 +238,8 @@ class _ResizablePaneState extends State { oldWidget.minSize != widget.minSize || oldWidget.maxSize != widget.maxSize || oldWidget.resizableSide != widget.resizableSide) { - setState(() { - if (widget.minSize > _size) _size = widget.minSize; - if (widget.maxSize < _size) _size = widget.maxSize; - }); + if (widget.minSize > _size) _size = widget.minSize; + if (widget.maxSize < _size) _size = widget.maxSize; } } diff --git a/lib/src/layout/scrollbar.dart b/lib/src/layout/scrollbar.dart index 334aced5..1cfc819b 100644 --- a/lib/src/layout/scrollbar.dart +++ b/lib/src/layout/scrollbar.dart @@ -156,7 +156,7 @@ class _RawMacosScrollBarState extends RawScrollbarState<_RawMacosScrollBar> { ); _trackColorTween = ColorTween( begin: MacosColors.transparent, - end: widget.effectiveThumbColor.withOpacity(.15), + end: widget.effectiveThumbColor.withOpacity(0.15), ).animate(_trackColorAnimationController); _thumbThicknessAnimationController.addListener(() { updateScrollbarPainter(); diff --git a/lib/src/layout/sidebar/sidebar_items.dart b/lib/src/layout/sidebar/sidebar_items.dart index f5954951..65b3dadb 100644 --- a/lib/src/layout/sidebar/sidebar_items.dart +++ b/lib/src/layout/sidebar/sidebar_items.dart @@ -206,9 +206,7 @@ class _SidebarItem extends StatelessWidget { /// Typically a [Navigator] call final VoidCallback? onClick; - void _handleActionTap() async { - onClick?.call(); - } + void _handleActionTap() => onClick?.call(); Map> get _actionMap => >{ ActivateIntent: CallbackAction( @@ -286,9 +284,8 @@ class _SidebarItem extends StatelessWidget { padding: EdgeInsets.only(right: spacing), child: MacosIconTheme.merge( data: MacosIconThemeData( - color: selected - ? MacosColors.white - : theme.primaryColor, + color: + selected ? MacosColors.white : theme.primaryColor, size: itemSize.iconSize, ), child: item.leading!, diff --git a/lib/src/layout/toolbar/sliver_toolbar.dart b/lib/src/layout/toolbar/sliver_toolbar.dart index 8ec1b087..a5a00dbf 100644 --- a/lib/src/layout/toolbar/sliver_toolbar.dart +++ b/lib/src/layout/toolbar/sliver_toolbar.dart @@ -275,7 +275,7 @@ class _SliverToolBarDelegate extends SliverPersistentHeaderDelegate { ); } - final Widget toolBar = FlexibleSpaceBar.createSettings( + return FlexibleSpaceBar.createSettings( minExtent: minExtent, maxExtent: maxExtent, currentExtent: math.max(minExtent, maxExtent - shrinkOffset), @@ -295,7 +295,6 @@ class _SliverToolBarDelegate extends SliverPersistentHeaderDelegate { height: height, ), ); - return toolBar; } @override diff --git a/lib/src/layout/toolbar/toolbar_divider.dart b/lib/src/layout/toolbar/toolbar_divider.dart index d20a3990..346a999c 100644 --- a/lib/src/layout/toolbar/toolbar_divider.dart +++ b/lib/src/layout/toolbar/toolbar_divider.dart @@ -23,15 +23,9 @@ class ToolBarDivider extends ToolbarItem { const Color.fromRGBO(255, 255, 255, 0.25), ); if (displayMode == ToolbarItemDisplayMode.inToolbar) { - return Padding( - padding: padding!, - child: Container(color: color, width: 1, height: 28), - ); + return Container(color: color, width: 1, height: 28, padding: padding!); } else { - return Padding( - padding: padding!, - child: Container(color: color, height: 1), - ); + return Container(color: color, height: 1, padding: padding!); } } } diff --git a/lib/src/layout/toolbar/toolbar_popup.dart b/lib/src/layout/toolbar/toolbar_popup.dart index 9d618128..87f1158b 100644 --- a/lib/src/layout/toolbar/toolbar_popup.dart +++ b/lib/src/layout/toolbar/toolbar_popup.dart @@ -203,7 +203,7 @@ class _ToolbarPopupMenuState extends State<_ToolbarPopupMenu> { super.initState(); _fadeOpacity = CurvedAnimation( parent: widget.route.animation!, - curve: const Interval(0.0, 0.50), + curve: const Interval(0.0, 0.5), reverseCurve: const Interval(0.75, 1.0), ); } @@ -335,7 +335,7 @@ class _ToolbarPopupRoute extends PopupRoute { @override Widget buildPage(context, animation, secondaryAnimation) { return LayoutBuilder(builder: (context, constraints) { - final page = _ToolbarPopupRoutePage( + return _ToolbarPopupRoutePage( target: target, placementOffset: placementOffset, placement: placement, @@ -349,7 +349,6 @@ class _ToolbarPopupRoute extends PopupRoute { horizontalOffset: horizontalOffset, position: position, ); - return page; }); } diff --git a/lib/src/layout/window.dart b/lib/src/layout/window.dart index 9ce38eb0..f20979b9 100644 --- a/lib/src/layout/window.dart +++ b/lib/src/layout/window.dart @@ -85,30 +85,28 @@ class _MacosWindowState extends State { @override void didUpdateWidget(covariant MacosWindow old) { super.didUpdateWidget(old); - setState(() { - if (widget.sidebar == null) { - _sidebarWidth = 0.0; - } else if (widget.sidebar!.minWidth != old.sidebar!.minWidth || - widget.sidebar!.maxWidth != old.sidebar!.maxWidth) { - if (widget.sidebar!.minWidth > _sidebarWidth) { - _sidebarWidth = widget.sidebar!.minWidth; - } - if (widget.sidebar!.maxWidth! < _sidebarWidth) { - _sidebarWidth = widget.sidebar!.maxWidth!; - } + if (widget.sidebar == null) { + _sidebarWidth = 0.0; + } else if (widget.sidebar!.minWidth != old.sidebar!.minWidth || + widget.sidebar!.maxWidth != old.sidebar!.maxWidth) { + if (widget.sidebar!.minWidth > _sidebarWidth) { + _sidebarWidth = widget.sidebar!.minWidth; } - if (widget.endSidebar == null) { - _endSidebarWidth = 0.0; - } else if (widget.endSidebar!.minWidth != old.endSidebar!.minWidth || - widget.endSidebar!.maxWidth != old.endSidebar!.maxWidth) { - if (widget.endSidebar!.minWidth > _endSidebarWidth) { - _endSidebarWidth = widget.endSidebar!.minWidth; - } - if (widget.endSidebar!.maxWidth! < _endSidebarWidth) { - _endSidebarWidth = widget.endSidebar!.maxWidth!; - } + if (widget.sidebar!.maxWidth! < _sidebarWidth) { + _sidebarWidth = widget.sidebar!.maxWidth!; } - }); + } + if (widget.endSidebar == null) { + _endSidebarWidth = 0.0; + } else if (widget.endSidebar!.minWidth != old.endSidebar!.minWidth || + widget.endSidebar!.maxWidth != old.endSidebar!.maxWidth) { + if (widget.endSidebar!.minWidth > _endSidebarWidth) { + _endSidebarWidth = widget.endSidebar!.minWidth; + } + if (widget.endSidebar!.maxWidth! < _endSidebarWidth) { + _endSidebarWidth = widget.endSidebar!.maxWidth!; + } + } } @override @@ -465,13 +463,17 @@ class _MacosWindowState extends State { setState(() => _sidebarSlideDuration = 300); setState(() => _showSidebar = !_showSidebar); await Future.delayed(Duration(milliseconds: _sidebarSlideDuration)); - setState(() => _sidebarSlideDuration = 0); + if (mounted) { + setState(() => _sidebarSlideDuration = 0); + } }, endSidebarToggler: () async { setState(() => _sidebarSlideDuration = 300); setState(() => _showEndSidebar = !_showEndSidebar); await Future.delayed(Duration(milliseconds: _sidebarSlideDuration)); - setState(() => _sidebarSlideDuration = 0); + if (mounted) { + setState(() => _sidebarSlideDuration = 0); + } }, child: layout, ); diff --git a/lib/src/macos_app.dart b/lib/src/macos_app.dart index a430ce1b..459918fb 100644 --- a/lib/src/macos_app.dart +++ b/lib/src/macos_app.dart @@ -409,8 +409,7 @@ class _MacosAppState extends State { @override Widget build(BuildContext context) { // leaves room for assertions, etc - Widget result = _buildMacosApp(context); - return result; + return _buildMacosApp(context); } Iterable> get _localizationsDelegates sync* { diff --git a/lib/src/selectors/color_well.dart b/lib/src/selectors/color_well.dart index cff9cd9f..9f1c5685 100644 --- a/lib/src/selectors/color_well.dart +++ b/lib/src/selectors/color_well.dart @@ -106,7 +106,7 @@ class _MacosColorWellState extends State { Widget build(BuildContext context) { final theme = MacosTheme.of(context); final outerColor = theme.brightness.isDark - ? MacosColors.systemGrayColor.withOpacity(0.50) + ? MacosColors.systemGrayColor.withOpacity(0.5) : MacosColors.white; return GestureDetector( onTap: () async { diff --git a/lib/src/selectors/date_picker.dart b/lib/src/selectors/date_picker.dart index 4fec86a3..f764394f 100644 --- a/lib/src/selectors/date_picker.dart +++ b/lib/src/selectors/date_picker.dart @@ -319,7 +319,8 @@ class _MacosDatePickerState extends State { child: Column( children: [ Padding( - padding: const EdgeInsets.fromLTRB(2.0, 2.0, 0.0, 4.0), + padding: + const EdgeInsets.only(left: 2.0, top: 2.0, bottom: 4.0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -410,7 +411,7 @@ class _MacosDatePickerState extends State { ), ), Padding( - padding: const EdgeInsets.fromLTRB(6.0, 0.0, 5.0, 0.0), + padding: const EdgeInsets.only(left: 6.0, right: 5.0), child: Column( children: [ GridView.custom( @@ -496,7 +497,7 @@ class _MacosDatePickerState extends State { ); decoration = BoxDecoration( color: datePickerTheme.monthViewCurrentDateColor, - borderRadius: BorderRadius.circular(3.0), + borderRadius: const BorderRadius.all(Radius.circular(3.0)), ); } else if (isToday) { dayText = Text( @@ -512,7 +513,7 @@ class _MacosDatePickerState extends State { ); decoration = BoxDecoration( color: datePickerTheme.monthViewSelectedDateColor, - borderRadius: BorderRadius.circular(3.0), + borderRadius: const BorderRadius.all(Radius.circular(3.0)), ); } @@ -524,20 +525,18 @@ class _MacosDatePickerState extends State { }); widget.onDateChanged.call(_formatAsDateTime()); }, - child: Padding( + child: Container( + decoration: decoration, padding: const EdgeInsets.symmetric(vertical: 2.0), - child: Container( - decoration: decoration, - child: Align( - alignment: Alignment.centerRight, - child: Padding( - padding: const EdgeInsets.only(right: 2.0), - child: dayText ?? - Text( - localizations.formatDecimal(day), - style: dayStyle, - ), - ), + child: Align( + alignment: Alignment.centerRight, + child: Padding( + padding: const EdgeInsets.only(right: 2.0), + child: dayText ?? + Text( + localizations.formatDecimal(day), + style: dayStyle, + ), ), ), ), diff --git a/lib/src/theme/macos_theme.dart b/lib/src/theme/macos_theme.dart index ac03ea2d..c8ea1f55 100644 --- a/lib/src/theme/macos_theme.dart +++ b/lib/src/theme/macos_theme.dart @@ -3,8 +3,8 @@ import 'package:macos_ui/macos_ui.dart'; import 'package:macos_ui/src/library.dart'; CupertinoDynamicColor _kScrollbarColor = CupertinoDynamicColor.withBrightness( - color: MacosColors.systemGrayColor.color.withOpacity(.8), - darkColor: MacosColors.systemGrayColor.darkColor.withOpacity(.8), + color: MacosColors.systemGrayColor.color.withOpacity(0.8), + darkColor: MacosColors.systemGrayColor.darkColor.withOpacity(0.8), ); /// Applies a macOS-style theme to descendant macOS widgets. diff --git a/lib/src/theme/tooltip_theme.dart b/lib/src/theme/tooltip_theme.dart index b0958ea7..1551c8bd 100644 --- a/lib/src/theme/tooltip_theme.dart +++ b/lib/src/theme/tooltip_theme.dart @@ -89,7 +89,7 @@ class MacosTooltipThemeData with Diagnosticable { brightness.isDark ? CupertinoColors.white : CupertinoColors.black, ), decoration: () { - final radius = BorderRadius.circular(2.0); + const radius = BorderRadius.all(Radius.circular(2.0)); final shadow = [ BoxShadow( color: brightness.isDark diff --git a/lib/src/theme/typography.dart b/lib/src/theme/typography.dart index 670d694c..d3efbeaf 100644 --- a/lib/src/theme/typography.dart +++ b/lib/src/theme/typography.dart @@ -140,8 +140,10 @@ class MacosTypography with Diagnosticable { required this.caption2, }); - static MacosTypography black = MacosTypography(color: CupertinoColors.black); - static MacosTypography white = MacosTypography(color: CupertinoColors.white); + static final MacosTypography black = + MacosTypography(color: CupertinoColors.black); + static final MacosTypography white = + MacosTypography(color: CupertinoColors.white); /// Style used for body text. final TextStyle body; diff --git a/test/buttons/pulldown_button_test.dart b/test/buttons/pulldown_button_test.dart index e22a355e..668914d0 100644 --- a/test/buttons/pulldown_button_test.dart +++ b/test/buttons/pulldown_button_test.dart @@ -75,7 +75,7 @@ void main() { MacosPulldownMenuItem( title: const Text('one'), onTap: () { - menuItemTapCounters[0] += 1; + menuItemTapCounters.first += 1; }, ), MacosPulldownMenuItem(