fix material selection handle paint with transparent textSelectionHandleColor (#49830)

This commit is contained in:
Bogdan Lukin 2020-02-01 00:28:17 +07:00 committed by GitHub
parent b2a27c109c
commit 275ec45ec4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 2 deletions

View File

@ -120,8 +120,10 @@ class _TextSelectionHandlePainter extends CustomPainter {
void paint(Canvas canvas, Size size) {
final Paint paint = Paint()..color = color;
final double radius = size.width/2.0;
canvas.drawCircle(Offset(radius, radius), radius, paint);
canvas.drawRect(Rect.fromLTWH(0.0, 0.0, radius, radius), paint);
final Rect circle = Rect.fromCircle(center: Offset(radius, radius), radius: radius);
final Rect point = Rect.fromLTWH(0.0, 0.0, radius, radius);
final Path path = Path()..addOval(circle)..addRect(point);
canvas.drawPath(path, paint);
}
@override

View File

@ -62,4 +62,39 @@ void main() {
expect(materialTextSelectionControls.canSelectAll(key.currentState), false);
});
});
group('material handles', () {
testWidgets('draws transparent handle correctly', (WidgetTester tester) async {
await tester.pumpWidget(RepaintBoundary(
child: Theme(
data: ThemeData(
textSelectionHandleColor: const Color(0x550000AA),
),
isMaterialAppTheme: true,
child: Builder(
builder: (BuildContext context) {
return Container(
color: Colors.white,
height: 800,
width: 800,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 250),
child: FittedBox(
child: materialTextSelectionControls.buildHandle(
context, TextSelectionHandleType.right, 10.0,
),
),
),
);
},
),
),
));
await expectLater(
find.byType(RepaintBoundary),
matchesGoldenFile('transparent_handle.png'),
);
});
});
}