Skip to content

Checkbox.fillColor should be applied to checkbox's background color when it is unchecked. #125643

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

QuncCccccc
Copy link
Contributor

@QuncCccccc QuncCccccc commented Apr 27, 2023

See https://docs.flutter.dev/release/breaking-changes/checkbox-fillColor for a migration guide


Fixes #123386. The fillColor should always be applied to the background color based on its definition and the border color can be customized by Checkbox.side. When the checkbox is unselected, the default fillColor should be changed to transparent now, and we assign the original fillColor value to Checkbox.side.color. When the checkbox is selected, the default fillColor is same as the original value, and the Checkbox.side.color is transparent.

Screenshot 2023-04-27 at 9 50 54 AM

Checkbox(
  fillColor: MaterialStateProperty.resolveWith((Set<MaterialState> states) {
     if (states.contains(MaterialState.selected)) {
        return Colors.orange;
     }
     return Colors.green;
  }),
  value: false, // or true to show Colors.orange
  onChanged: (bool? value) { },
),

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • All existing and new tests are passing.

@flutter-dashboard flutter-dashboard bot added f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels. team Infra upgrades, team productivity, code health, technical debt. See also team: labels. labels Apr 27, 2023
@QuncCccccc QuncCccccc force-pushed the add_inactive_background_color_for_checkbox branch from 3d64414 to 7582725 Compare April 27, 2023 17:45
@QuncCccccc QuncCccccc marked this pull request as ready for review April 27, 2023 19:53
@QuncCccccc QuncCccccc requested a review from HansMuller April 27, 2023 19:53
@QuncCccccc
Copy link
Contributor Author

This will cause some scuba failures in g3. I will attach a g3fix cl/527658125 once this is merged.

Copy link
Contributor

@HansMuller HansMuller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice update. LGTM

BorderSide get activeSide => _activeSide!;
BorderSide? _activeSide;
set activeSide(BorderSide? value) {
assert(value != null);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So set activeSide(BorderSide value) { instead of this assert And the getter wouldn't need a !.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it. Fixing!


BorderSide get inactiveSide => _inactiveSide!;
BorderSide? _inactiveSide;
set inactiveSide(BorderSide? value) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same feedback as activeSide

@QuncCccccc QuncCccccc force-pushed the add_inactive_background_color_for_checkbox branch from 3c28dfb to 471fc10 Compare April 28, 2023 16:59
@QuncCccccc QuncCccccc merged commit a433f88 into flutter:master Apr 28, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 29, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 29, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 29, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 29, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 30, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 30, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2023
tarrinneal pushed a commit to flutter/packages that referenced this pull request May 1, 2023
Manual roll Flutter from 66fa4c5 to 828a040 (79 revisions)

Manual roll requested by [email protected]

flutter/flutter@66fa4c5...828a040

2023-05-01 [email protected] Roll Flutter Engine from
666bc34c61aa to 687f4c761db1 (2 revisions) (flutter/flutter#125818)
2023-05-01 [email protected] Revert "Add
migrator to upgrade gradle version when conflict with And…
(flutter/flutter#125813)
2023-05-01 [email protected] Roll pub packages
(flutter/flutter#125801)
2023-05-01 [email protected] [tools] fix `expect` calls in
`FakeCommand` (flutter/flutter#125783)
2023-05-01 [email protected] Roll Packages from
7e3f5da to de6131d (41 revisions) (flutter/flutter#125811)
2023-05-01 [email protected] Introduce `TabBar.tabAlignment`
(flutter/flutter#125036)
2023-05-01 [email protected] Roll Flutter Engine from
b0da68e7e024 to 666bc34c61aa (1 revision) (flutter/flutter#125805)
2023-05-01 [email protected] add support to
customize Slider interacivity (flutter/flutter#121483)
2023-05-01 [email protected] Roll Flutter Engine from
b4551c72487c to b0da68e7e024 (1 revision) (flutter/flutter#125800)
2023-05-01 [email protected] Roll Flutter Engine from
605528f293d0 to b4551c72487c (1 revision) (flutter/flutter#125795)
2023-05-01 [email protected] Roll Flutter Engine from
bba66b658cee to 605528f293d0 (2 revisions) (flutter/flutter#125793)
2023-05-01 [email protected] Roll Flutter Engine from
2fa61b91d7c2 to bba66b658cee (1 revision) (flutter/flutter#125791)
2023-05-01 [email protected] Roll Flutter Engine from
30c91b8180e7 to 2fa61b91d7c2 (1 revision) (flutter/flutter#125789)
2023-05-01 [email protected] Roll Flutter Engine from
d76a22e67eea to 30c91b8180e7 (1 revision) (flutter/flutter#125787)
2023-05-01 [email protected] [tools] Apply Android Studio version
detection logic to explicitly configured installation directory
(`flutter config --android-studio-dir`) (flutter/flutter#125596)
2023-04-30 [email protected] Roll Flutter Engine from
f234d5e1dd26 to d76a22e67eea (1 revision) (flutter/flutter#125776)
2023-04-30 [email protected] Roll Flutter Engine from
c796390d14cb to f234d5e1dd26 (1 revision) (flutter/flutter#125773)
2023-04-30 [email protected] Roll Flutter Engine from
e99f31f4437d to c796390d14cb (1 revision) (flutter/flutter#125762)
2023-04-30 [email protected] Roll Flutter Engine from
1942b0c2cd9a to e99f31f4437d (1 revision) (flutter/flutter#125758)
2023-04-30 [email protected] Roll Flutter Engine from
7806f8a4fb4c to 1942b0c2cd9a (1 revision) (flutter/flutter#125757)
2023-04-29 [email protected] Roll Flutter Engine from
8167f909bc8d to 7806f8a4fb4c (2 revisions) (flutter/flutter#125750)
2023-04-29 [email protected] Roll Flutter Engine from
900b8a89b73b to 8167f909bc8d (1 revision) (flutter/flutter#125748)
2023-04-29 [email protected] Roll Flutter Engine from
c56ea398b0dc to 900b8a89b73b (1 revision) (flutter/flutter#125747)
2023-04-29 [email protected] Roll Flutter Engine from
0834c886f06a to c56ea398b0dc (1 revision) (flutter/flutter#125746)
2023-04-29 [email protected] Roll Flutter Engine from
68f2ed0a1db5 to 0834c886f06a (1 revision) (flutter/flutter#125736)
2023-04-29 [email protected] Roll Flutter Engine from
0079bb4a20d0 to 68f2ed0a1db5 (1 revision) (flutter/flutter#125735)
2023-04-29 [email protected] Fix crasher in DragableScrollableSheet
when controller is animating and switching widgets
(flutter/flutter#125721)
2023-04-29 [email protected] Roll Flutter Engine from
8f04b29c1b98 to 0079bb4a20d0 (2 revisions) (flutter/flutter#125734)
2023-04-29 [email protected] Roll Flutter Engine from
788d0ed5ed06 to 8f04b29c1b98 (1 revision) (flutter/flutter#125731)
2023-04-29 [email protected] Roll Flutter Engine from
89a8affdced0 to 788d0ed5ed06 (1 revision) (flutter/flutter#125729)
2023-04-29 [email protected] Roll Flutter Engine from
3835d975c8b0 to 89a8affdced0 (2 revisions) (flutter/flutter#125725)
2023-04-29 [email protected] Roll Flutter Engine from
1ae848ce6b55 to 3835d975c8b0 (1 revision) (flutter/flutter#125722)
2023-04-29 [email protected] fix package template
create platform folders (flutter/flutter#125292)
2023-04-28 [email protected] Sliver Cross Axis Group
(flutter/flutter#123862)
2023-04-28 [email protected] Roll Flutter Engine from
2a84ea55e4ef to 1ae848ce6b55 (1 revision) (flutter/flutter#125718)
2023-04-28 [email protected] Remove bringup from
new_gallery_skia_ios__transition_perf (flutter/flutter#125715)
2023-04-28 [email protected] Roll Flutter Engine from
98b6fabc66bb to 2a84ea55e4ef (10 revisions) (flutter/flutter#125714)
2023-04-28 [email protected] Opt into
CMake policy CMP0135 (flutter/flutter#125502)
2023-04-28 [email protected] Add a channel to query the engine
keyboard state (flutter/flutter#122885)
2023-04-28 [email protected] Roll pub packages
(flutter/flutter#125698)
2023-04-28 [email protected]
`Checkbox.fillColor` should be applied to checkbox's background color
when it is unchecked. (flutter/flutter#125643)
2023-04-28 [email protected] Add back one Skia test on
iOS (flutter/flutter#125663)
2023-04-28 [email protected] Roll pub packages
(flutter/flutter#125447)
2023-04-28 [email protected] Nit:
grammar in documentation (flutter/flutter#125462)
...
@rydmike
Copy link
Contributor

rydmike commented Jul 10, 2023

@QuncCccccc This PR breaks ALL past previous CheckBox theming on stable 3.10 and earlier.

On stable 3.10.5 and earlier, one my customized Checkbox themes looks like this:
Screenshot 2023-07-10 at 19 27 08
Note above the tinted disable state, which also uses a custom theme for enabled state at the same time.

Optionally it can look like this when we want the colored outline in none selected mode in stable 3.10.5 and earlier.

Screenshot 2023-07-10 at 19 28 12

AFTER this PR the same theming produces these results:
Screenshot 2023-07-10 at 19 29 32

And:

Screenshot 2023-07-10 at 19 31 08

This is a SUPER breaking feature for past Checkbox theming behavior.

@QuncCccccc
Copy link
Contributor Author

@QuncCccccc This PR breaks ALL past previous CheckBox theming on stable 3.10 and earlier.

On stable 3.10.5 and earlier, one my customized Checkbox themes looks like this: Screenshot 2023-07-10 at 19 27 08 Note above the tinted disable state, which also uses a custom theme for enabled state at the same time.

Optionally it can look like this when we want the colored outline in none selected mode in stable 3.10.5 and earlier.

Screenshot 2023-07-10 at 19 28 12

AFTER this PR the same theming produces these results: Screenshot 2023-07-10 at 19 29 32

And:

Screenshot 2023-07-10 at 19 31 08

This is a SUPER breaking feature for past Checkbox theming behavior.

Hi! Sorry for causing that trouble! This PR is intended to fix the fillColor behavior error because based on its definition, it should be the background color of CheckBox. So some breaking behaviors are expected. Could you attach a code sample? I can help to take a look and fix it!

@rydmike
Copy link
Contributor

rydmike commented Jul 10, 2023

@QuncCccccc, thanks and yes I do agree that the fillColor does behave oddly as it was (is in stable), but on the other hand stable channel code depends on that behavior.

I will open a separate regression issue with a sample. I was working on it, but got side tracked with a nice video call with @TahaTesser.

Issue coming soon, I will tag you and ref this PR. I just found this PR when I was tracking down why it was broken when I tested on master channel.

Sure I can use the new theme props and make it work, but potentially it is a breaking change for other users as well. I don't know if others have used this theming feature as much as I have, but potentially. This does need to be documented as BREAKING change if it remains as is, with migration docs. But let's see when I post the sample and we dig into it.

nploi pushed a commit to nploi/packages that referenced this pull request Jul 16, 2023
)

Manual roll Flutter from 66fa4c5 to 828a040 (79 revisions)

Manual roll requested by [email protected]

flutter/flutter@66fa4c5...828a040

2023-05-01 [email protected] Roll Flutter Engine from
666bc34c61aa to 687f4c761db1 (2 revisions) (flutter/flutter#125818)
2023-05-01 [email protected] Revert "Add
migrator to upgrade gradle version when conflict with And…
(flutter/flutter#125813)
2023-05-01 [email protected] Roll pub packages
(flutter/flutter#125801)
2023-05-01 [email protected] [tools] fix `expect` calls in
`FakeCommand` (flutter/flutter#125783)
2023-05-01 [email protected] Roll Packages from
7e3f5da to de6131d (41 revisions) (flutter/flutter#125811)
2023-05-01 [email protected] Introduce `TabBar.tabAlignment`
(flutter/flutter#125036)
2023-05-01 [email protected] Roll Flutter Engine from
b0da68e7e024 to 666bc34c61aa (1 revision) (flutter/flutter#125805)
2023-05-01 [email protected] add support to
customize Slider interacivity (flutter/flutter#121483)
2023-05-01 [email protected] Roll Flutter Engine from
b4551c72487c to b0da68e7e024 (1 revision) (flutter/flutter#125800)
2023-05-01 [email protected] Roll Flutter Engine from
605528f293d0 to b4551c72487c (1 revision) (flutter/flutter#125795)
2023-05-01 [email protected] Roll Flutter Engine from
bba66b658cee to 605528f293d0 (2 revisions) (flutter/flutter#125793)
2023-05-01 [email protected] Roll Flutter Engine from
2fa61b91d7c2 to bba66b658cee (1 revision) (flutter/flutter#125791)
2023-05-01 [email protected] Roll Flutter Engine from
30c91b8180e7 to 2fa61b91d7c2 (1 revision) (flutter/flutter#125789)
2023-05-01 [email protected] Roll Flutter Engine from
d76a22e67eea to 30c91b8180e7 (1 revision) (flutter/flutter#125787)
2023-05-01 [email protected] [tools] Apply Android Studio version
detection logic to explicitly configured installation directory
(`flutter config --android-studio-dir`) (flutter/flutter#125596)
2023-04-30 [email protected] Roll Flutter Engine from
f234d5e1dd26 to d76a22e67eea (1 revision) (flutter/flutter#125776)
2023-04-30 [email protected] Roll Flutter Engine from
c796390d14cb to f234d5e1dd26 (1 revision) (flutter/flutter#125773)
2023-04-30 [email protected] Roll Flutter Engine from
e99f31f4437d to c796390d14cb (1 revision) (flutter/flutter#125762)
2023-04-30 [email protected] Roll Flutter Engine from
1942b0c2cd9a to e99f31f4437d (1 revision) (flutter/flutter#125758)
2023-04-30 [email protected] Roll Flutter Engine from
7806f8a4fb4c to 1942b0c2cd9a (1 revision) (flutter/flutter#125757)
2023-04-29 [email protected] Roll Flutter Engine from
8167f909bc8d to 7806f8a4fb4c (2 revisions) (flutter/flutter#125750)
2023-04-29 [email protected] Roll Flutter Engine from
900b8a89b73b to 8167f909bc8d (1 revision) (flutter/flutter#125748)
2023-04-29 [email protected] Roll Flutter Engine from
c56ea398b0dc to 900b8a89b73b (1 revision) (flutter/flutter#125747)
2023-04-29 [email protected] Roll Flutter Engine from
0834c886f06a to c56ea398b0dc (1 revision) (flutter/flutter#125746)
2023-04-29 [email protected] Roll Flutter Engine from
68f2ed0a1db5 to 0834c886f06a (1 revision) (flutter/flutter#125736)
2023-04-29 [email protected] Roll Flutter Engine from
0079bb4a20d0 to 68f2ed0a1db5 (1 revision) (flutter/flutter#125735)
2023-04-29 [email protected] Fix crasher in DragableScrollableSheet
when controller is animating and switching widgets
(flutter/flutter#125721)
2023-04-29 [email protected] Roll Flutter Engine from
8f04b29c1b98 to 0079bb4a20d0 (2 revisions) (flutter/flutter#125734)
2023-04-29 [email protected] Roll Flutter Engine from
788d0ed5ed06 to 8f04b29c1b98 (1 revision) (flutter/flutter#125731)
2023-04-29 [email protected] Roll Flutter Engine from
89a8affdced0 to 788d0ed5ed06 (1 revision) (flutter/flutter#125729)
2023-04-29 [email protected] Roll Flutter Engine from
3835d975c8b0 to 89a8affdced0 (2 revisions) (flutter/flutter#125725)
2023-04-29 [email protected] Roll Flutter Engine from
1ae848ce6b55 to 3835d975c8b0 (1 revision) (flutter/flutter#125722)
2023-04-29 [email protected] fix package template
create platform folders (flutter/flutter#125292)
2023-04-28 [email protected] Sliver Cross Axis Group
(flutter/flutter#123862)
2023-04-28 [email protected] Roll Flutter Engine from
2a84ea55e4ef to 1ae848ce6b55 (1 revision) (flutter/flutter#125718)
2023-04-28 [email protected] Remove bringup from
new_gallery_skia_ios__transition_perf (flutter/flutter#125715)
2023-04-28 [email protected] Roll Flutter Engine from
98b6fabc66bb to 2a84ea55e4ef (10 revisions) (flutter/flutter#125714)
2023-04-28 [email protected] Opt into
CMake policy CMP0135 (flutter/flutter#125502)
2023-04-28 [email protected] Add a channel to query the engine
keyboard state (flutter/flutter#122885)
2023-04-28 [email protected] Roll pub packages
(flutter/flutter#125698)
2023-04-28 [email protected]
`Checkbox.fillColor` should be applied to checkbox's background color
when it is unchecked. (flutter/flutter#125643)
2023-04-28 [email protected] Add back one Skia test on
iOS (flutter/flutter#125663)
2023-04-28 [email protected] Roll pub packages
(flutter/flutter#125447)
2023-04-28 [email protected] Nit:
grammar in documentation (flutter/flutter#125462)
...
parlough pushed a commit to flutter/website that referenced this pull request Aug 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels. team Infra upgrades, team productivity, code health, technical debt. See also team: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add backgroundColor to Checkbox and CheckboxThemeData
3 participants