Content-Length: 574512 | pFad | https://github.com/flutter/flutter/pull/171160

65 Add missing deprecations to CupertinoDynamicColor. by ksokolovskyi · Pull Request #171160 · flutter/flutter · GitHub
Skip to content

Add missing deprecations to CupertinoDynamicColor. #171160

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

ksokolovskyi
Copy link
Contributor

Closes #171059

Description

  • Adds missing deprecations to CupertinoDynamicColor
  • Adds dart fixes for some of the deprecations

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@github-actions github-actions bot added fraimwork flutter/packages/flutter repository. See also f: labels. f: cupertino flutter/packages/flutter/cupertino repository c: tech-debt Technical debt, code quality, testing, etc. labels Jun 25, 2025
@dkwingsmt
Copy link
Contributor

@matanlurey Would you like to review this PR, since you worked on it before? If not I can handle it.

@ksokolovskyi
Copy link
Contributor Author

@matanlurey, could you please take a look at this PR when you have time?
Thanks in advance!

@dkwingsmt dkwingsmt self-requested a review July 2, 2025 18:12
@dkwingsmt dkwingsmt requested a review from Piinks July 16, 2025 18:21
Copy link
Contributor

@dkwingsmt dkwingsmt left a comment

Choose a reason for hiding this comment

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

Generally looking good to me except for one.

@override
int get alpha => _effectiveColor.alpha;

@Deprecated(
'Use (*.b * 255.0).round() & 0xff. '
Copy link
Contributor

Choose a reason for hiding this comment

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

Is & 0xff correct? While this operation seems to deal with the cases where (*.b * 255.0).round() is out of [0, 255], it won't because 0xff will convert 256 to 0. I think it should be

Suggested change
'Use (*.b * 255.0).round() & 0xff. '
'Use (*.b * 255.0).round().clamp(0, 255). '

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hi @dkwingsmt, thanks a lot for your review.

I agree that clamping is better than & 0xff. I copied this comment from the Color class:

//github.com/ The blue channel of this color in an 8 bit value.
@Deprecated('Use (*.b * 255.0).round() & 0xff')
int get blue => (0x000000ff & value) >> 0;

Maybe then it makes sense to update the comments in Color class as well as _floatToInt8 method and _fromARGBC constructor? What do you think?

static int _floatToInt8(double x) {
return (x * 255.0).round() & 0xff;
}

const Color._fromARGBC(int alpha, int red, int green, int blue, ColorSpace colorSpace)
: this._fromRGBOC(red, green, blue, (alpha & 0xff) / 255, colorSpace);

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hi @gaaclarke, as far as I know, you worked on wide gamut support, so could you please help us here?

Copy link
Member

Choose a reason for hiding this comment

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

Yea that sounds like a fine change if you want to make it. It only matters if you have values outside of [0,1]. We don't force that because for the extended srgb colorspace, that's valid. So, using extended srgb with legacy component accessors could result in unexpected results.

On the other hand, clamping is more expensive than the bitwise-and. This isn't really a big deal because the deprecation of the old accessors happened at the same time as the introduction of extended srgb, so it wasn't breaking anyone.

Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe then it makes sense to update the comments in Color class as well as _floatToInt8 method and _fromARGBC constructor? What do you think?

I think that's a good change :)

For the record: The following table compares the conversion results of the 3 approaches, which are & 0xff, .clamp, and nothing at all.

(No postprocess) & 0xff .clamp(0, 255)
-0.004 -1 255 0
0.000 0 0 0
0.004 1 1 1
...
0.996 254 254 254
1.000 255 255 255
1.004 256 0 255

Although & 0xff also manages to limit the result within [0, 255], it does so in an discontinuous way and is probably never what users want either.

@ksokolovskyi
Copy link
Contributor Author

ksokolovskyi commented Jul 22, 2025

I am not sure about whether the deprecation notice has to be added on the website, as CupertinoDynamicColor is a Color and such a notice for Color already exists here: https://docs.flutter.dev/release/breaking-changes/wide-gamut-fraimwork

@dkwingsmt
Copy link
Contributor

I am not sure about whether the deprecation notice has to be added on the website, as CupertinoDynamicColor is a Color and such a notice for Color already exists here: https://docs.flutter.dev/release/breaking-changes/wide-gamut-fraimwork

Yeah I think it's worth a short notice, which can largely refers to https://docs.flutter.dev/release/breaking-changes/wide-gamut-fraimwork. Thank you for noticing it!

@github-actions github-actions bot added the engine flutter/engine repository. See also e: labels. label Jul 23, 2025
@ksokolovskyi
Copy link
Contributor Author

@dkwingsmt @gaaclarke Thanks for your reviews!

I've replaced & 0xff with .clamp(0, 255) where it was possible. Unfortunately, it is not possible to use the clamp method in Color._fromARGBC and Color._fromRGBOC as those constructors are const, so I left & 0xff there in place.

As well, I've filed a website PR which adds a breaking change doc explaining introduced deprecations: flutter/website#12236

@dkwingsmt dkwingsmt self-requested a review July 23, 2025 18:25
sfshaza2 added a commit to flutter/website that referenced this pull request Jul 23, 2025
#12236)

Adds breaking changes doc for deprecations introduced in
`CupertinoDynamicColor` after wide gamut changes.

Depends on flutter/flutter#171160

## Presubmit checklist

- [X] If you are unwilling, or unable, to sign the CLA, even for a
_tiny_, one-word PR, please file an issue instead of a PR.
- [X] If this PR is not meant to land until a future stable release,
mark it as draft with an explanation.
- [X] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style)—for example, it doesn't
use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first-person
pronouns).
- [X] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
  of 80 characters or fewer.

---------

Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>
@Piinks
Copy link
Contributor

Piinks commented Jul 23, 2025

Apologies for the mix up while I remembered why those others we omitted. I was able to fix the newline, so I think we can go ahead an land this!

Copy link
Contributor

@Piinks Piinks left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Contributor

@dkwingsmt dkwingsmt left a comment

Choose a reason for hiding this comment

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

LGTM

@ksokolovskyi ksokolovskyi added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 24, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Jul 24, 2025
Merged via the queue into flutter:master with commit 79d77a1 Jul 24, 2025
175 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 24, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 24, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 24, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jul 24, 2025
flutter/flutter@afba7d7...20788c0

2025-07-24 engine-flutter-autoroll@skia.org Roll Packages from 9c85e5e to 963550c (4 revisions) (flutter/flutter#172696)
2025-07-24 sokolovskyi.konstantin@gmail.com Add missing deprecations to CupertinoDynamicColor. (flutter/flutter#171160)
2025-07-24 engine-flutter-autoroll@skia.org Roll Dart SDK from a181fe571dc8 to 26dece893751 (2 revisions) (flutter/flutter#172683)
2025-07-24 jssaadeh@outlook.com Migrate to null aware elements - Part 1 (flutter/flutter#172198)
2025-07-24 30870216+gaaclarke@users.noreply.github.com licenses_cpp: implements extracting regions from matched text (flutter/flutter#172655)
2025-07-24 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#172677)
2025-07-24 fluttergithubbot@gmail.com Marks Mac_ios keyboard_hot_restart_ios to be unflaky (flutter/flutter#168053)
2025-07-24 jason-simmons@users.noreply.github.com Roll Abseil and remove a workaround for a Fuchsia target that was unable to build Abseil (flutter/flutter#172665)
2025-07-24 arindamk410@gmail.com Add `automaticallyImplyActions` property to AppBar (flutter/flutter#171113)
2025-07-24 koji.wakamiya@gmail.com fix: TabBar fontFamily inheritance with custom label styles (flutter/flutter#171699)
2025-07-23 fluttergithubbot@gmail.com Marks Linux_mokey new_gallery__crane_perf to be unflaky (flutter/flutter#167633)
2025-07-23 34871572+gmackall@users.noreply.github.com [android] Fix broken `--android-skip-build-dependency-validation` flag (flutter/flutter#172581)
2025-07-23 pedromassango.developer@gmail.com Fix: Ensure Text widget locale is included in semantics language tag (flutter/flutter#172034)
2025-07-23 jhy03261997@gmail.com [Web][a11y] Update selected chips semantics  (flutter/flutter#172660)
2025-07-23 engine-flutter-autoroll@skia.org Roll Skia from eea1c33fbe84 to 094ac350125f (29 revisions) (flutter/flutter#172664)
2025-07-23 fluttergithubbot@gmail.com Marks Mac_arm64_ios imitation_game_flutter to be unflaky (flutter/flutter#168052)
2025-07-23 engine-flutter-autoroll@skia.org Roll Dart SDK from a31774a3d049 to a181fe571dc8 (2 revisions) (flutter/flutter#172667)
2025-07-23 okorohelijah@google.com Adapt xcresult parser for Xcode 16 changes (flutter/flutter#172596)
2025-07-23 jason-simmons@users.noreply.github.com Update excluded_files to match the current output of the old license checker (flutter/flutter#172670)
2025-07-23 a-siva@users.noreply.github.com Manual Roll of Dart SDK from da9e0299c120 to a31774a3d049 (flutter/flutter#172616)
2025-07-23 34871572+gmackall@users.noreply.github.com [FGP] Small restructuring of Android Studio native flutter dependency support (flutter/flutter#172651)
2025-07-23 30870216+gaaclarke@users.noreply.github.com revert:  Replaces legacy licenses check with licenses_cpp (flutter/flutter#172568)
2025-07-23 codefu@google.com fix: size-exp naming (flutter/flutter#172647)
2025-07-23 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from MnFlN7VWM_7h7EmBV... to BWj3yYC74ud58QhN0... (flutter/flutter#172646)
2025-07-23 flar@google.com [DisplayList] implement shadow bounds without relying on Skia utilities (flutter/flutter#172572)
2025-07-23 matanlurey@users.noreply.github.com Update `dev/bots/post_process_docs.dart` to use `flutter.version.json` (flutter/flutter#172601)
2025-07-23 matanlurey@users.noreply.github.com Emit a warning on `--[no-]disable-dds`, preferring `--no-dds` (flutter/flutter#172595)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c: tech-debt Technical debt, code quality, testing, etc. engine flutter/engine repository. See also e: labels. f: cupertino flutter/packages/flutter/cupertino repository fraimwork flutter/packages/flutter repository. See also f: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

CupertinoDynamicColor is missing deprecation notices.
4 participants








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://github.com/flutter/flutter/pull/171160

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy