Unverified Commit 1e843bb6 authored by chunhtai's avatar chunhtai Committed by GitHub

fix paint order of ink feature (#59108)

parent 82a6f9bf
...@@ -684,7 +684,12 @@ class _AppBarState extends State<AppBar> { ...@@ -684,7 +684,12 @@ class _AppBarState extends State<AppBar> {
fit: StackFit.passthrough, fit: StackFit.passthrough,
children: <Widget>[ children: <Widget>[
widget.flexibleSpace, widget.flexibleSpace,
appBar, // Creates a material widget to prevent the flexibleSpace from swallow
// the ink splash effect.
Material(
type: MaterialType.transparency,
child: appBar,
),
], ],
); );
} }
......
...@@ -10,6 +10,7 @@ import 'package:flutter/rendering.dart'; ...@@ -10,6 +10,7 @@ import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import '../rendering/mock_canvas.dart';
import '../widgets/semantics_tester.dart'; import '../widgets/semantics_tester.dart';
Widget buildSliverAppBarApp({ Widget buildSliverAppBarApp({
...@@ -1103,6 +1104,48 @@ void main() { ...@@ -1103,6 +1104,48 @@ void main() {
expect(find.byIcon(Icons.menu), findsNothing); expect(find.byIcon(Icons.menu), findsNothing);
}); });
testWidgets('AppBar ink splash draw on the correct canvas', (WidgetTester tester) async {
// This is a regression test for https://github.com/flutter/flutter/issues/58665
final Key key = UniqueKey();
await tester.pumpWidget(
MaterialApp(
home: Center(
child: AppBar(
title: const Text('Abc'),
actions: <Widget>[
IconButton(
key: key,
icon: const Icon(Icons.add_circle),
tooltip: 'First button',
onPressed: () {},
),
],
flexibleSpace: DecoratedBox(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: const Alignment(0.0, -1.0),
end: const Alignment(-0.04, 1.0),
colors: <Color>[Colors.blue.shade500, Colors.blue.shade800],
),
),
),
),
),
),
);
final RenderObject painter = tester.renderObject(
find.descendant(
of: find.descendant(
of: find.byType(AppBar),
matching: find.byType(Stack),
),
matching: find.byType(Material)
)
);
await tester.tap(find.byKey(key));
expect(painter, paints..save()..translate()..save()..translate()..circle(x: 24.0, y: 28.0));
});
testWidgets('AppBar handles loose children 0', (WidgetTester tester) async { testWidgets('AppBar handles loose children 0', (WidgetTester tester) async {
final GlobalKey key = GlobalKey(); final GlobalKey key = GlobalKey();
await tester.pumpWidget( await tester.pumpWidget(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment