diff --git a/packages/flutter/lib/src/painting/box_decoration.dart b/packages/flutter/lib/src/painting/box_decoration.dart index 914f478491..12439d5d0b 100644 --- a/packages/flutter/lib/src/painting/box_decoration.dart +++ b/packages/flutter/lib/src/painting/box_decoration.dart @@ -325,7 +325,7 @@ class _BoxDecorationPainter extends BoxPainter { Paint _cachedBackgroundPaint; Rect _rectForCachedBackgroundPaint; - Paint _getBackgroundPaint(Rect rect) { + Paint _getBackgroundPaint(Rect rect, TextDirection textDirection) { assert(rect != null); assert(_decoration.gradient != null || _rectForCachedBackgroundPaint == null); @@ -335,7 +335,7 @@ class _BoxDecorationPainter extends BoxPainter { if (_decoration.color != null) paint.color = _decoration.color; if (_decoration.gradient != null) { - paint.shader = _decoration.gradient.createShader(rect); + paint.shader = _decoration.gradient.createShader(rect, textDirection: textDirection); _rectForCachedBackgroundPaint = rect; } _cachedBackgroundPaint = paint; @@ -376,7 +376,7 @@ class _BoxDecorationPainter extends BoxPainter { void _paintBackgroundColor(Canvas canvas, Rect rect, TextDirection textDirection) { if (_decoration.color != null || _decoration.gradient != null) - _paintBox(canvas, rect, _getBackgroundPaint(rect), textDirection); + _paintBox(canvas, rect, _getBackgroundPaint(rect, textDirection), textDirection); } DecorationImagePainter _imagePainter; diff --git a/packages/flutter/test/painting/box_decoration_test.dart b/packages/flutter/test/painting/box_decoration_test.dart index 4d051ca4ea..ef97a00c91 100644 --- a/packages/flutter/test/painting/box_decoration_test.dart +++ b/packages/flutter/test/painting/box_decoration_test.dart @@ -42,4 +42,30 @@ void main() { expect(decoration.hitTest(size, const Offset(10.0, 10.0), textDirection: TextDirection.ltr), isFalse); expect(decoration.hitTest(size, const Offset(990.0, 10.0), textDirection: TextDirection.ltr), isTrue); }); + + test('BoxDecoration with LinearGradient using AlignmentDirectional', () { + const BoxDecoration decoration = const BoxDecoration( + color: const Color(0xFF000000), + gradient: const LinearGradient( + begin: AlignmentDirectional.centerStart, + end: AlignmentDirectional.bottomEnd, + colors: const[ + const Color(0xFF000000), + const Color(0xFFFFFFFF), + ], + ), + ); + final BoxPainter painter = decoration.createBoxPainter(); + const Size size = const Size(1000.0, 1000.0); + expect( + (Canvas canvas) { + painter.paint( + canvas, + const Offset(0.0, 0.0), + const ImageConfiguration(size: size, textDirection: TextDirection.rtl), + ); + }, + paints..rect(rect: Offset.zero & size), + ); + }); }