-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathmainwrapper.dart
More file actions
90 lines (82 loc) · 2.5 KB
/
mainwrapper.dart
File metadata and controls
90 lines (82 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_nested_persistance_navigation/navigations/updates_navigation.dart';
import 'package:flutter_nested_persistance_navigation/navigations/wishlists_navigation.dart';
class MainWrapper extends StatefulWidget {
const MainWrapper({super.key});
@override
MainWrapperState createState() => MainWrapperState();
}
class MainWrapperState extends State<MainWrapper> {
int _selectedIndex = 0;
final List<GlobalKey<NavigatorState>> _navigatorKeys = [
wishListNavigatorKey,
updatesNavigatorKey,
];
Future<bool> _systemBackButtonPressed() async {
if (_navigatorKeys[_selectedIndex].currentState?.canPop() == true) {
_navigatorKeys[_selectedIndex]
.currentState
?.pop(_navigatorKeys[_selectedIndex].currentContext);
return false;
} else {
return await showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('Exit App'),
content: Text('Do you really want to exit the app?'),
actions: <Widget>[
TextButton(
onPressed: () => Navigator.of(context).pop(false),
child: Text('No'),
),
TextButton(
onPressed: () => SystemChannels.platform.invokeMethod<void>('SystemNavigator.pop'),
child: Text('Yes'),
),
],
),
) ?? false;
}
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: _systemBackButtonPressed,
child: Scaffold(
bottomNavigationBar: NavigationBar(
onDestinationSelected: (int index) {
setState(() {
_selectedIndex = index;
});
},
selectedIndex: _selectedIndex,
destinations: const [
NavigationDestination(
selectedIcon: Icon(Icons.favorite),
icon: Icon(Icons.favorite_border),
label: 'Wishlist',
),
NavigationDestination(
selectedIcon: Icon(Icons.notifications),
icon: Icon(Icons.notifications_none),
label: 'Updates',
),
],
),
body: SafeArea(
top: false,
child: IndexedStack(
index: _selectedIndex,
children: const <Widget>[
/// First Route
Wishlist(),
/// Second Route
UpdatesNavigator(),
],
),
),
),
);
}
}