dev
dart 65 lines 1.45 KB
Raw
1 import 'package:flutter/material.dart';
2 import 'package:cake_wallet/main.dart';
3
4 class RouteAwareWidget extends StatefulWidget {
5 RouteAwareWidget(
6 {required this.child,
7 this.pushToWidget,
8 this.pushToNextWidget,
9 this.popWidget,
10 this.popNextWidget});
11
12 final Widget child;
13 final Function(BuildContext context)? pushToWidget;
14 final Function(BuildContext context)? pushToNextWidget;
15 final Function(BuildContext context)? popWidget;
16 final Function(BuildContext context)? popNextWidget;
17
18 @override
19 State<RouteAwareWidget> createState() => RouteAwareWidgetState();
20 }
21
22 class RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {
23 @override
24 void didChangeDependencies() {
25 super.didChangeDependencies();
26 routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute);
27 }
28
29 @override
30 void dispose() {
31 routeObserver.unsubscribe(this);
32 super.dispose();
33 }
34
35 @override
36 void didPush() {
37 if (widget.pushToWidget != null) {
38 widget.pushToWidget!(context);
39 }
40 }
41
42 @override
43 void didPushNext() {
44 if (widget.pushToNextWidget != null) {
45 widget.pushToNextWidget!(context);
46 }
47 }
48
49 @override
50 void didPop() {
51 if (widget.popWidget != null) {
52 widget.popWidget!(context);
53 }
54 }
55
56 @override
57 void didPopNext() {
58 if (widget.popNextWidget != null) {
59 widget.popNextWidget!(context);
60 }
61 }
62
63 @override
64 Widget build(BuildContext context) => widget.child;
65 }