example_button.dart 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import 'package:flutter/material.dart';
  2. import 'package:appflowy_popover/popover.dart';
  3. class PopoverMenu extends StatefulWidget {
  4. @override
  5. State<StatefulWidget> createState() => _PopoverMenuState();
  6. }
  7. class _PopoverMenuState extends State<PopoverMenu> {
  8. final PopoverMutex popOverMutex = PopoverMutex();
  9. @override
  10. Widget build(BuildContext context) {
  11. return Container(
  12. width: 200,
  13. height: 200,
  14. decoration: const BoxDecoration(color: Colors.yellow),
  15. child: ListView(children: [
  16. const Text("App"),
  17. Popover(
  18. triggerActions:
  19. PopoverTriggerActionFlags.hover | PopoverTriggerActionFlags.click,
  20. mutex: popOverMutex,
  21. offset: const Offset(10, 0),
  22. popupBuilder: (BuildContext context) {
  23. return PopoverMenu();
  24. },
  25. child: TextButton(
  26. onPressed: () {},
  27. child: const Text("First"),
  28. ),
  29. ),
  30. Popover(
  31. triggerActions:
  32. PopoverTriggerActionFlags.hover | PopoverTriggerActionFlags.click,
  33. mutex: popOverMutex,
  34. offset: const Offset(10, 0),
  35. popupBuilder: (BuildContext context) {
  36. return PopoverMenu();
  37. },
  38. child: TextButton(
  39. onPressed: () {},
  40. child: const Text("Second"),
  41. ),
  42. ),
  43. ]),
  44. );
  45. }
  46. }
  47. class ExampleButton extends StatelessWidget {
  48. final String label;
  49. final Alignment targetAnchor;
  50. final Alignment followerAnchor;
  51. final Offset? offset;
  52. const ExampleButton({
  53. Key? key,
  54. required this.label,
  55. this.targetAnchor = Alignment.topLeft,
  56. this.followerAnchor = Alignment.topLeft,
  57. this.offset = Offset.zero,
  58. }) : super(key: key);
  59. @override
  60. Widget build(BuildContext context) {
  61. return Popover(
  62. triggerActions: PopoverTriggerActionFlags.click,
  63. offset: offset,
  64. child: TextButton(child: Text(label), onPressed: () {}),
  65. popupBuilder: (BuildContext context) {
  66. return PopoverMenu();
  67. },
  68. );
  69. }
  70. }