diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 581c5cf..ac89eac 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -2,16 +2,16 @@ name: Publish to Pub.dev on: push: - branches: [master] + branches: [beta, master] jobs: publishing: runs-on: ubuntu-latest steps: - - name: 'Checkout' + - name: "Checkout" uses: actions/checkout@v2 # required! - - - name: '>> Flutter package <<' + + - name: ">> Flutter package <<" uses: k-paxian/dart-package-publisher@master with: credentialJson: ${{ secrets.CREDENTIAL_JSON }} diff --git a/CHANGELOG.md b/CHANGELOG.md index d8e653b..45a0907 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# [2.2.1] - 22 Sep 2023 +- Added TextStyle for selected Button + # [2.2.0+1] - 03 June 2023 - Deprecated `radius` in favor of `borderRadius` diff --git a/README.md b/README.md index d6b6bb7..b09376d 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,10 @@ Add the following to your `pubspec.yaml` file: textStyle: TextStyle( fontSize: 16, ), + selectedTextStyle: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w700, + ), ), unSelectedColor: Theme.of(context).canvasColor, buttonLables: [ diff --git a/example/lib/RadioButtonPage.dart b/example/lib/RadioButtonPage.dart index 782bc40..39ee60b 100644 --- a/example/lib/RadioButtonPage.dart +++ b/example/lib/RadioButtonPage.dart @@ -2,7 +2,7 @@ import 'package:custom_radio_grouped_button/custom_radio_grouped_button.dart'; import 'package:flutter/material.dart'; class RadioButton extends StatefulWidget { - RadioButton({Key key}) : super(key: key); + RadioButton({Key? key}) : super(key: key); @override State createState() => _RadioButtonState(); @@ -26,7 +26,7 @@ class _RadioButtonState extends State { FloatingActionButton( heroTag: "sfsdf", onPressed: () { - key.currentState.selectButton('jhgiugx'); + key.currentState?.selectButton('jhgiugx'); }, child: Icon(Icons.check_box_outline_blank), ), @@ -180,7 +180,13 @@ class _RadioButtonState extends State { buttonTextStyle: ButtonTextStyle( selectedColor: Colors.white, unSelectedColor: Colors.black, - textStyle: Theme.of(context).textTheme.bodyLarge, + selectedTextStyle: TextStyle( + fontFamily: 'Montserrat', + fontSize: 16, + fontWeight: FontWeight.bold, + ), + textStyle: Theme.of(context).textTheme.bodyLarge ?? + TextStyle(), ), radioButtonValue: (value) { print(value); diff --git a/example/lib/main.dart b/example/lib/main.dart index a8999d2..4a3f56d 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -18,7 +18,7 @@ class MyApp extends StatelessWidget { } class GroupedButton extends StatelessWidget { - const GroupedButton({Key key}) : super(key: key); + const GroupedButton({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -167,10 +167,15 @@ class GroupedButton extends StatelessWidget { ), CustomCheckBoxGroup( buttonTextStyle: ButtonTextStyle( - selectedColor: Colors.red, + selectedColor: Colors.pinkAccent, unSelectedColor: Colors.orange, - textStyle: - TextStyle(fontSize: 16, color: Colors.pinkAccent), + textStyle: TextStyle( + fontSize: 16, + ), + selectedTextStyle: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w700, + ), ), unSelectedColor: Theme.of(context).canvasColor, buttonLables: [ diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj index d9333e4..c5fd548 100644 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -182,7 +182,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 33CC10EC2044A3C60003C045 = { diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index fb7259e..83d8872 100644 --- a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ =2.18.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 34132c4..c692832 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -7,7 +7,7 @@ homepage: https://github.com/ketanchoyal/custom_radio_grouped_button version: 1.0.0+1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.17.0 <3.0.0" dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: custom_radio_grouped_button: path: ../ - cupertino_icons: ^0.1.2 + cupertino_icons: dev_dependencies: flutter_test: diff --git a/lib/CustomButtons/ButtonTextStyle.dart b/lib/CustomButtons/ButtonTextStyle.dart index 4ff9ce6..b6e51d7 100644 --- a/lib/CustomButtons/ButtonTextStyle.dart +++ b/lib/CustomButtons/ButtonTextStyle.dart @@ -12,10 +12,14 @@ class ButtonTextStyle { /// Color in [TextStyle] will be ignored final TextStyle textStyle; + /// Color in [TextStyle] will be ignored + final TextStyle selectedTextStyle; + const ButtonTextStyle({ this.selectedColor = Colors.white, this.unSelectedColor = Colors.black, this.disabledColor = Colors.grey, this.textStyle = const TextStyle(), - }); + TextStyle? selectedTextStyle, + }) : selectedTextStyle = selectedTextStyle ?? textStyle; } diff --git a/lib/CustomButtons/CustomCheckBoxGroup.dart b/lib/CustomButtons/CustomCheckBoxGroup.dart index 7316932..af478af 100644 --- a/lib/CustomButtons/CustomCheckBoxGroup.dart +++ b/lib/CustomButtons/CustomCheckBoxGroup.dart @@ -168,6 +168,7 @@ class CustomCheckBoxGroupState extends State> { return buttonValuesList.map((e) { bool disabled = disabledValues.contains(e); int index = buttonValuesList.indexOf(e); + bool isSelected = selectedValues.contains(e); return Padding( padding: EdgeInsets.all(widget.padding), child: Card( @@ -204,19 +205,11 @@ class CustomCheckBoxGroupState extends State> { borderRadius: BorderRadius.zero, ), onPressed: disabled ? null : () => selectButton(e), - child: Text( - widget.buttonLables[index], - textAlign: TextAlign.center, - overflow: TextOverflow.ellipsis, - maxLines: 1, - style: widget.buttonTextStyle.textStyle.copyWith( - color: disabled - ? widget.buttonTextStyle.disabledColor - : selectedValues.contains(e) - ? widget.buttonTextStyle.selectedColor - : widget.buttonTextStyle.unSelectedColor, - ), - ), + child: Text(widget.buttonLables[index], + textAlign: TextAlign.center, + overflow: TextOverflow.ellipsis, + maxLines: 1, + style: textStyle(isSelected, disabled)), ), ), ), @@ -224,10 +217,26 @@ class CustomCheckBoxGroupState extends State> { }).toList(); } + TextStyle textStyle(bool isSelected, bool disabled) { + if (isSelected) { + return widget.buttonTextStyle.selectedTextStyle.copyWith( + color: disabled + ? widget.buttonTextStyle.disabledColor + : widget.buttonTextStyle.selectedColor, + ); + } + return widget.buttonTextStyle.textStyle.copyWith( + color: disabled + ? widget.buttonTextStyle.disabledColor + : widget.buttonTextStyle.unSelectedColor, + ); + } + List _buildButtonsRow() { return buttonValuesList.map((e) { int index = buttonValuesList.indexOf(e); bool disabled = disabledValues.contains(e); + bool isSelected = selectedValues.contains(e); return Card( margin: widget.margin ?? EdgeInsets.all(widget.absoluteZeroSpacing ? 0 : 4), @@ -269,13 +278,7 @@ class CustomCheckBoxGroupState extends State> { textAlign: TextAlign.center, overflow: TextOverflow.ellipsis, maxLines: 1, - style: widget.buttonTextStyle.textStyle.copyWith( - color: disabled - ? widget.buttonTextStyle.disabledColor - : selectedValues.contains(e) - ? widget.buttonTextStyle.selectedColor - : widget.buttonTextStyle.unSelectedColor, - ), + style: textStyle(isSelected, disabled), ), ), ), diff --git a/lib/CustomButtons/CustomRadioButton.dart b/lib/CustomButtons/CustomRadioButton.dart index 3588cfc..7cd89f9 100644 --- a/lib/CustomButtons/CustomRadioButton.dart +++ b/lib/CustomButtons/CustomRadioButton.dart @@ -169,6 +169,7 @@ class CustomRadioButtonState extends State> { return buttonValues.map((e) { int index = buttonValues.indexOf(e); bool disabled = disabledValues.contains(e); + bool isSelected = _currentSelectedValue == e; return Padding( padding: EdgeInsets.all(widget.padding), child: Card( @@ -203,19 +204,11 @@ class CustomRadioButtonState extends State> { borderRadius: BorderRadius.zero, ), onPressed: disabled ? null : () => selectButton(e), - child: Text( - widget.buttonLables[index], - textAlign: TextAlign.center, - overflow: TextOverflow.ellipsis, - maxLines: 1, - style: widget.buttonTextStyle.textStyle.copyWith( - color: disabled - ? widget.buttonTextStyle.disabledColor - : _currentSelectedValue == e - ? widget.buttonTextStyle.selectedColor - : widget.buttonTextStyle.unSelectedColor, - ), - ), + child: Text(widget.buttonLables[index], + textAlign: TextAlign.center, + overflow: TextOverflow.ellipsis, + maxLines: 1, + style: textStyle(isSelected, disabled)), ), ), ), @@ -227,6 +220,7 @@ class CustomRadioButtonState extends State> { return buttonValues.map((e) { int index = buttonValues.indexOf(e); bool disabled = disabledValues.contains(e); + bool isSelected = _currentSelectedValue == e; return Card( margin: widget.margin ?? EdgeInsets.all(widget.absoluteZeroSpacing ? 0 : 4), @@ -265,13 +259,7 @@ class CustomRadioButtonState extends State> { textAlign: TextAlign.left, overflow: TextOverflow.ellipsis, maxLines: 1, - style: widget.buttonTextStyle.textStyle.copyWith( - color: disabled - ? widget.buttonTextStyle.disabledColor - : _currentSelectedValue == e - ? widget.buttonTextStyle.selectedColor - : widget.buttonTextStyle.unSelectedColor, - ), + style: textStyle(isSelected, disabled), ), ), ), @@ -279,6 +267,21 @@ class CustomRadioButtonState extends State> { }).toList(); } + TextStyle textStyle(bool isSelected, bool disabled) { + if (isSelected) { + return widget.buttonTextStyle.selectedTextStyle.copyWith( + color: disabled + ? widget.buttonTextStyle.disabledColor + : widget.buttonTextStyle.selectedColor, + ); + } + return widget.buttonTextStyle.textStyle.copyWith( + color: disabled + ? widget.buttonTextStyle.disabledColor + : widget.buttonTextStyle.unSelectedColor, + ); + } + @override Widget build(BuildContext context) { return _buildRadioButtons(); diff --git a/pubspec.lock b/pubspec.lock index 7a7d0e5..a0798dc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.17.2" fake_async: dependency: transitive description: @@ -59,46 +59,38 @@ 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 - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" path: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" sky_engine: dependency: transitive description: flutter @@ -108,10 +100,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: @@ -148,10 +140,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.0" vector_math: dependency: transitive description: @@ -160,5 +152,13 @@ packages: 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: "0.1.4-beta" sdks: - dart: ">=2.18.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index a7c659e..40a3628 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: custom_radio_grouped_button description: Custom Radio Buttons and Grouped Check Box Button -version: 2.2.0+1 +version: 2.2.1 homepage: https://github.com/ketanchoyal/custom_radio_grouped_button