blob: 4acac47d8749d1abe83ac9eb2b475e179d343c0d [file] [log] [blame]
// Copyright 2014 The Flutter 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/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('DisposableBuildContext asserts on disposed state', (WidgetTester tester) async {
final GlobalKey<TestWidgetState> key = GlobalKey<TestWidgetState>();
await tester.pumpWidget(TestWidget(key));
final TestWidgetState state = key.currentState!;
expect(state.mounted, true);
final DisposableBuildContext context = DisposableBuildContext(state);
expect(context.context, state.context);
await tester.pumpWidget(const TestWidget(null));
expect(state.mounted, false);
expect(() => context.context, throwsAssertionError);
context.dispose();
expect(context.context, null);
expect(() => state.context, throwsFlutterError);
expect(() => DisposableBuildContext(state), throwsAssertionError);
});
}
class TestWidget extends StatefulWidget {
const TestWidget(Key? key) : super(key: key);
@override
State<TestWidget> createState() => TestWidgetState();
}
class TestWidgetState extends State<TestWidget> {
@override
Widget build(BuildContext context) => const SizedBox(height: 50);
}