packages icon indicating copy to clipboard operation
packages copied to clipboard

[vector_graphics_compiler] Fix rgb/rgba color parsing to support modern CSS syntax

Open AlexDochioiu opened this issue 1 month ago • 2 comments

  • Consolidate rgb() and rgba() parsing into single implementation
  • Add support for space-separated color values
  • Add support for percentage-based RGB values
  • Add support for slash (/) separator before alpha channel
  • Handle both comma and space delimiters
  • Add comprehensive test coverage for various color formats

This PR solves https://github.com/flutter/flutter/issues/179261

Pre-Review Checklist

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

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.

AlexDochioiu avatar Nov 30 '25 11:11 AlexDochioiu

Thanks for the contribution! Once you've completed the checklist, please mark the PR as ready for review.

Please make sure to follow the linked style guide.

stuartmorgan-g avatar Nov 30 '25 15:11 stuartmorgan-g

@stuartmorgan-g Completed the checklist. This is my first PR to any flutter/dart repo. If anything is not exactly correct, please let me know and I'll address.

AlexDochioiu avatar Dec 01 '25 08:12 AlexDochioiu

Ping @stuartmorgan-g . Any chance we can get this fix reviewed/merged?

AlexDochioiu avatar Dec 16 '25 08:12 AlexDochioiu

I can do an initial review, but this will need a review from the engine team. Review capacity tends to be low in December, which is probably why this hasn't been picked up yet.

stuartmorgan-g avatar Dec 16 '25 20:12 stuartmorgan-g

Thank you for the review @stuartmorgan-g . I completely re-wrote to a fresh implementation that checks strictly for the format and handles correctly all the cases (including weird ones such as R G,B,A -- where R G are space delimited) that seem to work on web.

I also added tests for a lot of invalid cases.

Bonus: I also added handling for

  1. R,G,B values being double instead of int (which seems to be supported on web).
  2. Values being out of bounds, which just clamp to the bounds on web rather than failing to parse

AlexDochioiu avatar Dec 17 '25 10:12 AlexDochioiu

/gemini review

AlexDochioiu avatar Dec 17 '25 10:12 AlexDochioiu