1
- import 'package:bot_toast/bot_toast .dart' ;
1
+ import 'package:contextual_menu/contextual_menu .dart' ;
2
2
import 'package:flutter/foundation.dart' ;
3
3
import 'package:flutter/gestures.dart' ;
4
4
import 'package:flutter/material.dart' hide MenuItem;
5
5
import 'package:preference_list/preference_list.dart' ;
6
- import 'package:contextual_menu/contextual_menu.dart' ;
7
6
8
7
class HomePage extends StatefulWidget {
9
8
const HomePage ({Key ? key}) : super (key: key);
@@ -16,6 +15,8 @@ class _HomePageState extends State<HomePage> {
16
15
bool _shouldReact = false ;
17
16
Offset ? _position;
18
17
Placement _placement = Placement .bottomLeft;
18
+ String ? _highlighted;
19
+ String ? _selected;
19
20
20
21
Menu ? _menu;
21
22
@@ -24,59 +25,119 @@ class _HomePageState extends State<HomePage> {
24
25
super .initState ();
25
26
}
26
27
28
+ void _onClick (MenuItem item) {
29
+ setState (() {
30
+ _selected = item.label;
31
+ });
32
+ }
33
+
34
+ void _onHighlight (MenuItem item) {
35
+ setState (() {
36
+ _highlighted = item.label;
37
+ });
38
+ }
39
+
40
+ void _onLoseHighlight (_) {
41
+ setState (() {
42
+ _highlighted = null ;
43
+ });
44
+ }
45
+
27
46
void _handleClickPopUp () {
28
47
_menu ?? = Menu (
29
48
items: [
30
49
MenuItem (
31
50
label: 'Look Up "LeanFlutter"' ,
51
+ onClick: _onClick,
52
+ onHighlight: _onHighlight,
53
+ onLoseHighlight: _onLoseHighlight,
32
54
),
33
55
MenuItem (
34
56
label: 'Search with Google' ,
57
+ onClick: _onClick,
58
+ onHighlight: _onHighlight,
59
+ onLoseHighlight: _onLoseHighlight,
35
60
),
36
61
MenuItem .separator (),
37
62
MenuItem (
38
63
label: 'Cut' ,
64
+ onClick: _onClick,
65
+ onHighlight: _onHighlight,
66
+ onLoseHighlight: _onLoseHighlight,
39
67
),
40
68
MenuItem (
41
69
label: 'Copy' ,
70
+ onClick: _onClick,
71
+ onHighlight: _onHighlight,
72
+ onLoseHighlight: _onLoseHighlight,
42
73
),
43
74
MenuItem (
44
75
label: 'Paste' ,
76
+ onClick: _onClick,
77
+ onHighlight: _onHighlight,
78
+ onLoseHighlight: _onLoseHighlight,
45
79
disabled: true ,
46
80
),
47
81
MenuItem .submenu (
48
82
label: 'Share' ,
83
+ onClick: _onClick,
84
+ onHighlight: _onHighlight,
85
+ onLoseHighlight: _onLoseHighlight,
49
86
submenu: Menu (
50
87
items: [
51
88
MenuItem (
52
89
label: 'Item 1' ,
90
+ onClick: _onClick,
91
+ onHighlight: _onHighlight,
92
+ onLoseHighlight: _onLoseHighlight,
53
93
),
54
94
MenuItem (
55
95
label: 'Item 2' ,
96
+ onClick: _onClick,
97
+ onHighlight: _onHighlight,
98
+ onLoseHighlight: _onLoseHighlight,
56
99
),
57
100
MenuItem .checkbox (
58
101
label: 'Centered Layout' ,
102
+ onClick: _onClick,
103
+ onHighlight: _onHighlight,
104
+ onLoseHighlight: _onLoseHighlight,
59
105
checked: false ,
60
106
),
61
107
MenuItem .separator (),
62
108
MenuItem .checkbox (
63
109
label: 'Show Primary Side Bar' ,
110
+ onClick: _onClick,
111
+ onHighlight: _onHighlight,
112
+ onLoseHighlight: _onLoseHighlight,
64
113
checked: true ,
65
114
),
66
115
MenuItem .checkbox (
67
116
label: 'Show Secondary Side Bar' ,
117
+ onClick: _onClick,
118
+ onHighlight: _onHighlight,
119
+ onLoseHighlight: _onLoseHighlight,
68
120
checked: true ,
69
121
),
70
122
MenuItem .checkbox (
71
123
label: 'Show Status Bar' ,
124
+ onClick: _onClick,
125
+ onHighlight: _onHighlight,
126
+ onLoseHighlight: _onLoseHighlight,
72
127
checked: true ,
73
128
),
74
129
MenuItem .checkbox (
75
130
label: 'Show Activity Bar' ,
131
+ onClick: _onClick,
132
+ onHighlight: _onHighlight,
133
+ onLoseHighlight: _onLoseHighlight,
76
134
checked: true ,
77
135
),
78
136
MenuItem .checkbox (
79
137
label: 'Show Panel Bar' ,
138
+ onClick: _onClick,
139
+ onHighlight: _onHighlight,
140
+ onLoseHighlight: _onLoseHighlight,
80
141
checked: false ,
81
142
),
82
143
],
@@ -85,47 +146,74 @@ class _HomePageState extends State<HomePage> {
85
146
MenuItem .separator (),
86
147
MenuItem .submenu (
87
148
label: 'Font' ,
149
+ onClick: _onClick,
150
+ onHighlight: _onHighlight,
151
+ onLoseHighlight: _onLoseHighlight,
88
152
submenu: Menu (
89
153
items: [
90
154
MenuItem .checkbox (
91
155
label: 'Item 1' ,
156
+ onHighlight: _onHighlight,
157
+ onLoseHighlight: _onLoseHighlight,
92
158
checked: true ,
93
159
onClick: (menuItem) {
94
160
menuItem.checked = ! (menuItem.checked == true );
161
+ _onClick (menuItem);
95
162
},
96
163
),
97
164
MenuItem .checkbox (
98
165
label: 'Item 2' ,
166
+ onHighlight: _onHighlight,
167
+ onLoseHighlight: _onLoseHighlight,
99
168
checked: false ,
100
169
onClick: (menuItem) {
101
170
menuItem.checked = ! (menuItem.checked == true );
171
+ _onClick (menuItem);
102
172
},
103
173
),
104
174
MenuItem .separator (),
105
175
MenuItem (
106
176
label: 'Item 3' ,
177
+ onClick: _onClick,
178
+ onHighlight: _onHighlight,
179
+ onLoseHighlight: _onLoseHighlight,
107
180
checked: false ,
108
181
),
109
182
MenuItem (
110
183
label: 'Item 4' ,
184
+ onClick: _onClick,
185
+ onHighlight: _onHighlight,
186
+ onLoseHighlight: _onLoseHighlight,
111
187
checked: false ,
112
188
),
113
189
MenuItem (
114
190
label: 'Item 5' ,
191
+ onClick: _onClick,
192
+ onHighlight: _onHighlight,
193
+ onLoseHighlight: _onLoseHighlight,
115
194
checked: false ,
116
195
),
117
196
],
118
197
),
119
198
),
120
199
MenuItem .submenu (
121
200
label: 'Speech' ,
201
+ onClick: _onClick,
202
+ onHighlight: _onHighlight,
203
+ onLoseHighlight: _onLoseHighlight,
122
204
submenu: Menu (
123
205
items: [
124
206
MenuItem (
125
207
label: 'Item 1' ,
208
+ onClick: _onClick,
209
+ onHighlight: _onHighlight,
210
+ onLoseHighlight: _onLoseHighlight,
126
211
),
127
212
MenuItem (
128
213
label: 'Item 2' ,
214
+ onClick: _onClick,
215
+ onHighlight: _onHighlight,
216
+ onLoseHighlight: _onLoseHighlight,
129
217
),
130
218
],
131
219
),
@@ -166,6 +254,21 @@ class _HomePageState extends State<HomePage> {
166
254
),
167
255
],
168
256
),
257
+ PreferenceListSection (
258
+ title: const Text ('Results' ),
259
+ children: [
260
+ PreferenceListItem (
261
+ disabled: true ,
262
+ title: const Text ('Highlighted' ),
263
+ accessoryView: Text (_highlighted.toString ()),
264
+ ),
265
+ PreferenceListItem (
266
+ disabled: true ,
267
+ title: const Text ('Selected' ),
268
+ accessoryView: Text (_selected.toString ()),
269
+ ),
270
+ ],
271
+ ),
169
272
],
170
273
);
171
274
}
0 commit comments