@@ -26,17 +26,17 @@ A popover menu displays a menu in a portal aligned to a child.
26
26
menuAnchor: Alignment.topRight,
27
27
childAnchor: Alignment.bottomRight,
28
28
menu: [
29
- FTileGroup (
29
+ FItemGroup (
30
30
children: [
31
- FTile (prefix: const Icon(FIcons.user), title: const Text('Personalization'), onPress: () {}),
32
- FTile (prefix: const Icon(FIcons.paperclip), title: const Text('Add attachments'), onPress: () {}),
33
- FTile (prefix: const Icon(FIcons.qrCode), title: const Text('Scan Document'), onPress: () {}),
31
+ FItem (prefix: const Icon(FIcons.user), title: const Text('Personalization'), onPress: () {}),
32
+ FItem (prefix: const Icon(FIcons.paperclip), title: const Text('Add attachments'), onPress: () {}),
33
+ FItem (prefix: const Icon(FIcons.qrCode), title: const Text('Scan Document'), onPress: () {}),
34
34
],
35
35
),
36
- FTileGroup (
36
+ FItemGroup (
37
37
children: [
38
- FTile (prefix: const Icon(FIcons.list), title: const Text('List View'), onPress: () {}),
39
- FTile (prefix: const Icon(FIcons.layoutGrid), title: const Text('Grid View'), onPress: () {}),
38
+ FItem (prefix: const Icon(FIcons.list), title: const Text('List View'), onPress: () {}),
39
+ FItem (prefix: const Icon(FIcons.layoutGrid), title: const Text('Grid View'), onPress: () {}),
40
40
],
41
41
),
42
42
],
@@ -64,6 +64,35 @@ dart run forui style create popover-menu
64
64
65
65
``` dart copy
66
66
FPopoverMenu(
67
+ popoverController: FPopoverController(vsync: this),
68
+ scrollController: ScrollController(),
69
+ style: FPopoverMenuStyle(...),
70
+ cacheExtent: 100,
71
+ maxHeight: 200,
72
+ dragStartBehavior: DragStartBehavior.start,
73
+ menuAnchor: Alignment.topCenter,
74
+ childAnchor: Alignment.bottomCenter,
75
+ spacing: FPortalSpacing.zero,
76
+ shift: FPortalShift.flip,
77
+ offset: Offset.zero,
78
+ groupId: 'popover-menu-group',
79
+ hideOnTapOutside: FHidePopoverRegion.excludeTarget,
80
+ traversalEdgeBehavior: TraversalEdgeBehavior.closedLoop,
81
+ menuBuilder: (context, controller, menu) => [FItemGroup(children: [])],
82
+ menu: [
83
+ FItemGroup(
84
+ children: [],
85
+ ),
86
+ ],
87
+ builder: (context, controller, child) => const Placeholder(),
88
+ child: const Placeholder(),
89
+ );
90
+ ```
91
+
92
+ ### ` FPopoverMenu.tiles(...) `
93
+
94
+ ``` dart copy
95
+ FPopoverMenu.tiles(
67
96
popoverController: FPopoverController(vsync: this),
68
97
scrollController: ScrollController(),
69
98
style: FPopoverMenuStyle(...),
@@ -88,3 +117,46 @@ FPopoverMenu(
88
117
child: const Placeholder(),
89
118
);
90
119
```
120
+
121
+ ## Examples
122
+
123
+ ### Tiles
124
+
125
+ <Tabs items = { [' Preview' , ' Code' ]} >
126
+ <Tabs.Tab >
127
+ <Widget name = ' popover-menu' variant = ' tiles' query = { {}} height = { 500 } />
128
+ </Tabs.Tab >
129
+ <Tabs.Tab >
130
+ ``` dart {6} copy
131
+ class PopoverMenuPage extends StatelessWidget {
132
+ @override
133
+ Widget build(BuildContext context) => FHeader(
134
+ title: const Text('Edit Notes'),
135
+ suffixes: [
136
+ FPopoverMenu.tiles(
137
+ menuAnchor: Alignment.topRight,
138
+ childAnchor: Alignment.bottomRight,
139
+ menu: [
140
+ FTileGroup(
141
+ children: [
142
+ FTile(prefix: const Icon(FIcons.user), title: const Text('Personalization'), onPress: () {}),
143
+ FTile(prefix: const Icon(FIcons.paperclip), title: const Text('Add attachments'), onPress: () {}),
144
+ FTile(prefix: const Icon(FIcons.qrCode), title: const Text('Scan Document'), onPress: () {}),
145
+ ],
146
+ ),
147
+ FTileGroup(
148
+ children: [
149
+ FTile(prefix: const Icon(FIcons.list), title: const Text('List View'), onPress: () {}),
150
+ FTile(prefix: const Icon(FIcons.layoutGrid), title: const Text('Grid View'), onPress: () {}),
151
+ ],
152
+ ),
153
+ ],
154
+ builder: (context, controller, child) => FHeaderAction(icon: const Icon(FIcons.ellipsis), onPress: controller.toggle),
155
+ ),
156
+ ],
157
+ );
158
+ }
159
+ ```
160
+
161
+ </Tabs.Tab >
162
+ </Tabs >
0 commit comments