diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 19fd091..8d5f773 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -18,7 +18,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter + flutter_lints: ^3.0.1 flutter: - - uses-material-design: true \ No newline at end of file + uses-material-design: true diff --git a/lib/src/custom_border_paint.dart b/lib/src/custom_border_paint.dart index b5b68fe..558b318 100644 --- a/lib/src/custom_border_paint.dart +++ b/lib/src/custom_border_paint.dart @@ -39,5 +39,9 @@ class CustomBorderPaint extends CustomPainter { } @override - bool shouldRepaint(covariant CustomPainter oldDelegate) => false; + bool shouldRepaint(covariant CustomBorderPaint oldDelegate) { + return oldDelegate.thickness != thickness || + oldDelegate.radius != radius || + oldDelegate.gradient != gradient; + } } diff --git a/lib/src/row_to_column.dart b/lib/src/row_to_column.dart index 5da1148..c17e9b1 100644 --- a/lib/src/row_to_column.dart +++ b/lib/src/row_to_column.dart @@ -22,22 +22,21 @@ class RowToColumn extends StatelessWidget { @override Widget build(BuildContext context) { - return ((isColumnToRow ?? false) ? isVertical : !isVertical) + final bool isRow = (isColumnToRow ?? false) ? isVertical : !isVertical; + final Widget layout = isRow ? Row( - mainAxisAlignment: - mainAxisAlignment ?? const Row().mainAxisAlignment, - mainAxisSize: mainAxisSize ?? const Row().mainAxisSize, - crossAxisAlignment: - crossAxisAlignment ?? const Row().crossAxisAlignment, + mainAxisAlignment: mainAxisAlignment ?? MainAxisAlignment.start, + mainAxisSize: mainAxisSize ?? MainAxisSize.max, + crossAxisAlignment: crossAxisAlignment ?? CrossAxisAlignment.center, children: children, ) : Column( - mainAxisAlignment: - mainAxisAlignment ?? const Column().mainAxisAlignment, - mainAxisSize: mainAxisSize ?? const Column().mainAxisSize, - crossAxisAlignment: - crossAxisAlignment ?? const Column().crossAxisAlignment, + mainAxisAlignment: mainAxisAlignment ?? MainAxisAlignment.start, + mainAxisSize: mainAxisSize ?? MainAxisSize.max, + crossAxisAlignment: crossAxisAlignment ?? CrossAxisAlignment.center, children: children, ); + + return layout; } } diff --git a/lib/src/utils.dart b/lib/src/utils.dart index 9e71f15..a2373a5 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -9,6 +9,13 @@ class Utils { required int totalSwitches, List? customWidths, required double minWidth}) { + assert(index >= 0 && totalSwitches > 0); + assert(minWidth > 0); + + if (customWidths != null && index < customWidths.length) { + return customWidths[index]; + } + /// Extra width to prevent overflow and add padding double extraWidth = 0.10 * totalSwitches; @@ -16,14 +23,12 @@ class Utils { double screenWidth = MediaQuery.of(context).size.width; /// Returns width per label - /// + ///s /// Returns passed minWidth per label if total requested width plus extra width is less than max screen width. /// Returns calculated width to fit within the max screen width if total requested width plus extra width is more than max screen width. - return customWidths != null - ? customWidths[index] - : ((totalSwitches + extraWidth) * minWidth < screenWidth - ? minWidth - : screenWidth / (totalSwitches + extraWidth)); + return ((totalSwitches + extraWidth) * minWidth < screenWidth) + ? minWidth + : screenWidth / (totalSwitches + extraWidth); } /// Ignores customHeights if toggle switch is horizontal