Files
flutter-go/packages/flutter_web/test/widgets/set_state_2_test.dart
2019-08-13 20:38:46 +08:00

49 lines
1.4 KiB
Dart

// 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_web_test/flutter_web_test.dart';
import 'package:flutter_web/widgets.dart';
void main() {
testWidgets('setState() overbuild test', (WidgetTester tester) async {
final List<String> log = <String>[];
final Builder inner = Builder(builder: (BuildContext context) {
log.add('inner');
return const Text('inner', textDirection: TextDirection.ltr);
});
int value = 0;
await tester.pumpWidget(Builder(builder: (BuildContext context) {
log.add('outer');
return StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
log.add('stateful');
return GestureDetector(onTap: () {
setState(() {
value += 1;
});
}, child: Builder(builder: (BuildContext context) {
log.add('middle $value');
return inner;
}));
});
}));
log.add('---');
await tester.tap(find.text('inner'));
await tester.pump();
log.add('---');
expect(
log,
equals(<String>[
'outer',
'stateful',
'middle 0',
'inner',
'---',
'stateful',
'middle 1',
'---',
]));
});
}