blob: 3dde3372cf8beb0ddbc858e4057b5ac034ed0b6a [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/widgets.dart';
import 'package:test/test.dart';
void main() {
test('setState() overbuild test', () {
testWidgets((WidgetTester tester) {
List<String> log = <String>[];
Builder inner = new Builder(
builder: (BuildContext context) {
log.add('inner');
return new Text('inner');
}
);
int value = 0;
tester.pumpWidget(new Builder(
builder: (BuildContext context) {
log.add('outer');
return new StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
log.add('stateful');
return new GestureDetector(
onTap: () {
setState(() {
value += 1;
});
},
child: new Builder(
builder: (BuildContext context) {
log.add('middle $value');
return inner;
}
)
);
}
);
}
));
log.add('---');
tester.tap(tester.findText('inner'));;
tester.pump();
log.add('---');
expect(log, equals(<String>[
'outer',
'stateful',
'middle 0',
'inner',
'---',
'stateful',
'middle 1',
'---',
]));
});
});
}