Skip to content

Commit 84b46ed

Browse files
committed
Fix barrier when using TextDirection.rtl while barrierCoversButton set to false
1 parent 5cee565 commit 84b46ed

File tree

2 files changed

+19
-20
lines changed

2 files changed

+19
-20
lines changed

packages/dropdown_button2/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- Respect button's borderRadius when barrierCoversButton is false.
1919
- Respect inputDecoration's borderRadius when barrierCoversButton is false.
2020
- Support BorderRadiusDirectional for dropdown menu.
21+
- Fix barrier when using TextDirection.rtl while barrierCoversButton set to false.
2122

2223
## 3.0.0-beta.21
2324

packages/dropdown_button2/lib/src/dropdown_route.dart

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -508,18 +508,21 @@ class _CustomModalBarrierState extends State<_CustomModalBarrier> {
508508

509509
return Stack(
510510
children: [
511-
ValueListenableBuilder(
512-
valueListenable: color,
513-
builder: (BuildContext context, Color? value, Widget? child) {
514-
return CustomPaint(
515-
painter: _DropdownBarrierPainter(
516-
barrierColor: value,
517-
buttonRect: widget.buttonRect,
518-
buttonBorderRadius: widget.buttonBorderRadius,
519-
pageSize: size,
520-
),
521-
);
522-
},
511+
IgnorePointer(
512+
child: ValueListenableBuilder(
513+
valueListenable: color,
514+
builder: (BuildContext context, Color? value, Widget? child) {
515+
return CustomPaint(
516+
size: Size(size.width, size.height),
517+
painter: _DropdownBarrierPainter(
518+
barrierColor: value,
519+
buttonRect: widget.buttonRect,
520+
buttonBorderRadius: widget.buttonBorderRadius,
521+
pageSize: size,
522+
),
523+
);
524+
},
525+
),
523526
),
524527
widget.child,
525528
],
@@ -543,15 +546,10 @@ class _DropdownBarrierPainter extends CustomPainter {
543546
@override
544547
void paint(Canvas canvas, Size size) {
545548
if (barrierColor != null) {
546-
final Rect rect = Rect.fromLTRB(
547-
-buttonRect.left,
548-
-buttonRect.top,
549-
pageSize.width,
550-
pageSize.height,
551-
);
549+
final Rect pageRect = Offset.zero & pageSize;
552550

553-
canvas.saveLayer(rect, Paint());
554-
canvas.drawRect(rect, Paint()..color = barrierColor!);
551+
canvas.saveLayer(pageRect, Paint());
552+
canvas.drawRect(pageRect, Paint()..color = barrierColor!);
555553

556554
final RRect buttonRRect = RRect.fromRectAndCorners(
557555
buttonRect,

0 commit comments

Comments
 (0)