// 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/material.dart'; abstract class PopScopeState extends State implements PopEntry { ModalRoute? _route; @override void onPopInvoked(bool didPop) {} @override late final ValueNotifier canPopNotifier; void initCanPopNotifier() { canPopNotifier = ValueNotifier(false); } @override void initState() { super.initState(); initCanPopNotifier(); } @override void didChangeDependencies() { super.didChangeDependencies(); final ModalRoute? nextRoute = ModalRoute.of(context); if (nextRoute != _route) { _route?.unregisterPopEntry(this); _route = nextRoute; _route?.registerPopEntry(this); } } @override void dispose() { _route?.unregisterPopEntry(this); canPopNotifier.dispose(); super.dispose(); } }