22// Use of this source code is governed by a BSD-style license that can be
33// found in the LICENSE file.
44
5- // TODO(gspencergoog): Remove this tag once this test's state leaks/test
6- // dependencies have been fixed.
7- // https://github.com/flutter/flutter/issues/85160
8- // Fails with "flutter test --test-randomize-ordering-seed=20210704"
9- @Tags (< String > ['no-shuffle' ])
10- library ;
11-
125import 'package:flutter/foundation.dart' ;
136import 'package:flutter/gestures.dart' ;
147import 'package:flutter/material.dart' ;
@@ -990,7 +983,6 @@ void main() {
990983 setUp (() { EditableText .debugDeterministicCursor = true ; });
991984 tearDown (() {
992985 EditableText .debugDeterministicCursor = false ;
993- _TestRenderEditablePainter .paintHistory.clear ();
994986 editable.foregroundPainter = null ;
995987 editable.painter = null ;
996988 editable.paintCount = 0 ;
@@ -1080,24 +1072,27 @@ void main() {
10801072 test ('swapping painters' , () {
10811073 layout (editable, constraints: BoxConstraints .loose (const Size (100 , 100 )));
10821074
1083- final _TestRenderEditablePainter painter1 = _TestRenderEditablePainter ();
1084- final _TestRenderEditablePainter painter2 = _TestRenderEditablePainter ();
1075+ final _TestRenderEditablePainter painter1 = _TestRenderEditablePainter (color : const Color ( 0x01234567 ) );
1076+ final _TestRenderEditablePainter painter2 = _TestRenderEditablePainter (color : const Color ( 0x76543210 ) );
10851077
10861078 editable.painter = painter1;
10871079 editable.foregroundPainter = painter2;
1088- pumpFrame (phase: EnginePhase .paint);
10891080 expect (
1090- _TestRenderEditablePainter .paintHistory,
1091- < _TestRenderEditablePainter > [painter1, painter2],
1081+ (Canvas canvas) => editable.paint (TestRecordingPaintingContext (canvas), Offset .zero),
1082+ paints
1083+ ..rect (rect: const Rect .fromLTRB (1 , 1 , 1 , 1 ), color: painter1.color)
1084+ ..paragraph ()
1085+ ..rect (rect: const Rect .fromLTRB (1 , 1 , 1 , 1 ), color: painter2.color),
10921086 );
10931087
1094- _TestRenderEditablePainter .paintHistory.clear ();
10951088 editable.painter = painter2;
10961089 editable.foregroundPainter = painter1;
1097- pumpFrame (phase: EnginePhase .paint);
10981090 expect (
1099- _TestRenderEditablePainter .paintHistory,
1100- < _TestRenderEditablePainter > [painter2, painter1],
1091+ (Canvas canvas) => editable.paint (TestRecordingPaintingContext (canvas), Offset .zero),
1092+ paints
1093+ ..rect (rect: const Rect .fromLTRB (1 , 1 , 1 , 1 ), color: painter2.color)
1094+ ..paragraph ()
1095+ ..rect (rect: const Rect .fromLTRB (1 , 1 , 1 , 1 ), color: painter1.color),
11011096 );
11021097 });
11031098
@@ -1112,11 +1107,8 @@ void main() {
11121107 errorDetails = TestRenderingFlutterBinding .instance.takeFlutterErrorDetails ();
11131108 });
11141109 expect (errorDetails, isNull);
1110+ expect (painter.paintCount, 2 );
11151111
1116- expect (
1117- _TestRenderEditablePainter .paintHistory,
1118- < _TestRenderEditablePainter > [painter, painter],
1119- );
11201112 expect (
11211113 (Canvas canvas) => editable.paint (TestRecordingPaintingContext (canvas), Offset .zero),
11221114 paints
@@ -1125,6 +1117,7 @@ void main() {
11251117 ..rect (rect: const Rect .fromLTRB (1 , 1 , 1 , 1 ), color: const Color (0x12345678 )),
11261118 );
11271119 });
1120+
11281121 test ('does not repaint the render editable when custom painters need repaint' , () {
11291122 layout (editable, constraints: BoxConstraints .loose (const Size (100 , 100 )));
11301123
@@ -1789,15 +1782,17 @@ class _TestRenderEditable extends RenderEditable {
17891782}
17901783
17911784class _TestRenderEditablePainter extends RenderEditablePainter {
1785+ _TestRenderEditablePainter ({this .color = const Color (0x12345678 )});
1786+
1787+ final Color color;
1788+
17921789 bool repaint = true ;
17931790 int paintCount = 0 ;
1794- static final List <_TestRenderEditablePainter > paintHistory = < _TestRenderEditablePainter > [];
17951791
17961792 @override
17971793 void paint (Canvas canvas, Size size, RenderEditable renderEditable) {
17981794 paintCount += 1 ;
1799- canvas.drawRect (const Rect .fromLTRB (1 , 1 , 1 , 1 ), Paint ()..color = const Color (0x12345678 ));
1800- paintHistory.add (this );
1795+ canvas.drawRect (const Rect .fromLTRB (1 , 1 , 1 , 1 ), Paint ()..color = color);
18011796 }
18021797
18031798 @override
@@ -1806,4 +1801,7 @@ class _TestRenderEditablePainter extends RenderEditablePainter {
18061801 void markNeedsPaint () {
18071802 notifyListeners ();
18081803 }
1804+
1805+ @override
1806+ String toString () => '_TestRenderEditablePainter#${shortHash (this )}' ;
18091807}
0 commit comments