board_toolbar.dart 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'package:app_flowy/plugins/grid/application/field/field_cache.dart';
  2. import 'package:appflowy_popover/popover.dart';
  3. import 'package:flowy_infra/image.dart';
  4. import 'package:flowy_infra/theme.dart';
  5. import 'package:flowy_infra_ui/flowy_infra_ui_web.dart';
  6. import 'package:flowy_infra_ui/style_widget/icon_button.dart';
  7. import 'package:flutter/widgets.dart';
  8. import 'package:provider/provider.dart';
  9. import 'board_setting.dart';
  10. class BoardToolbarContext {
  11. final String viewId;
  12. final GridFieldCache fieldCache;
  13. BoardToolbarContext({
  14. required this.viewId,
  15. required this.fieldCache,
  16. });
  17. }
  18. class BoardToolbar extends StatelessWidget {
  19. final BoardToolbarContext toolbarContext;
  20. const BoardToolbar({
  21. required this.toolbarContext,
  22. Key? key,
  23. }) : super(key: key);
  24. @override
  25. Widget build(BuildContext context) {
  26. return SizedBox(
  27. height: 40,
  28. child: Row(
  29. children: [
  30. _SettingButton(
  31. settingContext: BoardSettingContext.from(toolbarContext),
  32. ),
  33. ],
  34. ),
  35. );
  36. }
  37. }
  38. class _SettingButton extends StatelessWidget {
  39. final BoardSettingContext settingContext;
  40. const _SettingButton({required this.settingContext, Key? key})
  41. : super(key: key);
  42. @override
  43. Widget build(BuildContext context) {
  44. final theme = context.read<AppTheme>();
  45. return Popover(
  46. triggerActions: PopoverTriggerActionFlags.click,
  47. child: FlowyIconButton(
  48. hoverColor: theme.hover,
  49. width: 22,
  50. onPressed: () {},
  51. icon: Padding(
  52. padding: const EdgeInsets.symmetric(vertical: 3.0, horizontal: 3.0),
  53. child: svgWidget("grid/setting/setting"),
  54. ),
  55. ),
  56. popupBuilder: (BuildContext popoverContext) {
  57. return BoardSettingListPopover(
  58. settingContext: settingContext,
  59. );
  60. },
  61. );
  62. }
  63. }