-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrevel_drawer.dart
123 lines (117 loc) · 3.72 KB
/
revel_drawer.dart
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
class RevealDrawer extends StatefulWidget {
@override
_RevealDrawerState createState() => _RevealDrawerState();
}
class _RevealDrawerState extends State<RevealDrawer>
with SingleTickerProviderStateMixin {
String selectedItem = "Home";
bool isDrawerOpen = false;
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: Stack(
children: <Widget>[
Positioned(
left: 0,
child: Container(
width: 200,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(height: 40),
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topRight: Radius.circular(30),
),
boxShadow: [
BoxShadow(color: Colors.black38, blurRadius: 10)
]),
margin: const EdgeInsets.all(15.0),
child: ClipRRect(
borderRadius: BorderRadius.only(
topRight: Radius.circular(30),
),
child: Image.asset(
"assets/images/color_street.jpg",
height: 160,
width: 130,
fit: BoxFit.cover,
),
),
),
buildListItem("Home"),
buildListItem("Auth"),
buildListItem("Settings"),
buildListItem("About us")
],
),
),
),
AnimatedPositioned(
curve: Curves.bounceOut,
duration: Duration(milliseconds: 900),
left: isDrawerOpen ? 200 : 0,
bottom: isDrawerOpen ? 30 : 0,
top: isDrawerOpen ? 60 : 0,
child: Container(
decoration: BoxDecoration(color: Colors.white, boxShadow: [
BoxShadow(color: Colors.black45, blurRadius: 20)
]),
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppBar(
title: Text("Home"),
leading: IconButton(
onPressed: this.toggleDrawer, icon: Icon(Icons.menu)),
)
],
),
),
)
],
),
);
}
toggleDrawer() {
setState(() {
isDrawerOpen = !isDrawerOpen;
});
}
onPressDrawerItem(String text) {
setState(() {
selectedItem = text;
});
}
buildListItem(String text) {
final bool isSelectedItem = selectedItem == text;
final Color color = isSelectedItem ? Colors.purple : Colors.black;
return FlatButton(
onPressed: () => onPressDrawerItem(text),
child: Row(
children: <Widget>[
Expanded(
flex: 3,
child: Text(
text,
style: TextStyle(
color: color, fontWeight: FontWeight.bold, fontSize: 25),
),
),
Expanded(
child: Divider(
color: color,
height: 40.0,
),
)
],
),
);
}
}