47 lines
1.2 KiB
Dart
47 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_redux/flutter_redux.dart';
|
|
import 'package:aman_kassa_flutter/redux/actions.dart';
|
|
import 'package:aman_kassa_flutter/redux/app_state.dart';
|
|
|
|
final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
|
|
|
|
class RouteAwareWidget extends StatefulWidget {
|
|
final Widget child;
|
|
|
|
RouteAwareWidget({this.child});
|
|
|
|
State<RouteAwareWidget> createState() => RouteAwareWidgetState(child: child);
|
|
}
|
|
|
|
class RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {
|
|
final Widget child;
|
|
|
|
RouteAwareWidgetState({this.child});
|
|
|
|
@override
|
|
void didChangeDependencies() {
|
|
super.didChangeDependencies();
|
|
routeObserver.subscribe(this, ModalRoute.of(context));
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
routeObserver.unsubscribe(this);
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
void didPush() {
|
|
// Route was pushed onto navigator and is now topmost route.
|
|
}
|
|
|
|
@override
|
|
void didPopNext() {
|
|
// Covering route was popped off the navigator.
|
|
StoreProvider.of<AppState>(context).dispatch(NavigatePopAction());
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) => Container(child: child);
|
|
}
|