FlutterOpen SourceRendering
One Parameter, 75 Days: Shipping blendMode to Flutter's RawImage
paintImage supported blendMode all along. The widgets just never asked. The anatomy of my tenth merged Flutter PR.
Read on
Read on On Site โKey takeaways
- The framework often already knows how: paintImage accepted blendMode for years, the widgets just never exposed it.
- Boring APIs merge: copy the nearest house pattern, preserve every default, keep the diff invisible until opt-in.
- markNeedsPaint, not markNeedsLayout: the cheaper invalidation shows you understand the pipeline.
- Test both layers, both directions: default stays default, custom forwards through.
Frequently asked questions
What does the blendMode parameter on RawImage do?
It controls the Paint.blendMode used when the image is composited onto the canvas. The default stays BlendMode.srcOver, so nothing changes for existing code.
How long did PR #185938 take to merge?
75 days: opened May 3, merged July 17, 2026, reviewed by the Flutter team with tests at both the widget and render layer.
How do I find a first Flutter framework contribution?
Look for capability that stops one layer short of the public API, anchor it on an existing issue, copy the house patterns, preserve defaults, and ship tests with the first push.