12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import 'package:app_flowy/plugins/grid/application/field/field_controller.dart';
- import 'package:appflowy_popover/appflowy_popover.dart';
- import 'package:easy_localization/easy_localization.dart';
- import 'package:flowy_infra/color_extension.dart';
- import 'package:flowy_infra_ui/flowy_infra_ui.dart';
- import 'package:flowy_infra_ui/style_widget/button.dart';
- import 'package:flutter/material.dart';
- import '../../../../generated/locale_keys.g.dart';
- import 'board_setting.dart';
- class BoardToolbarContext {
- final String viewId;
- final GridFieldController fieldController;
- BoardToolbarContext({
- required this.viewId,
- required this.fieldController,
- });
- }
- class BoardToolbar extends StatelessWidget {
- final BoardToolbarContext toolbarContext;
- const BoardToolbar({
- required this.toolbarContext,
- Key? key,
- }) : super(key: key);
- @override
- Widget build(BuildContext context) {
- return SizedBox(
- height: 40,
- child: Row(
- children: [
- const Spacer(),
- _SettingButton(
- settingContext: BoardSettingContext.from(toolbarContext),
- ),
- ],
- ),
- );
- }
- }
- class _SettingButton extends StatefulWidget {
- final BoardSettingContext settingContext;
- const _SettingButton({required this.settingContext, Key? key})
- : super(key: key);
- @override
- State<_SettingButton> createState() => _SettingButtonState();
- }
- class _SettingButtonState extends State<_SettingButton> {
- late PopoverController popoverController;
- @override
- void initState() {
- popoverController = PopoverController();
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- return AppFlowyPopover(
- controller: popoverController,
- direction: PopoverDirection.leftWithTopAligned,
- triggerActions: PopoverTriggerFlags.none,
- constraints: BoxConstraints.loose(const Size(260, 400)),
- child: FlowyTextButton(
- LocaleKeys.settings_title.tr(),
- fontSize: 14,
- fillColor: Colors.transparent,
- hoverColor: AFThemeExtension.of(context).lightGreyHover,
- padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 6),
- onPressed: () {
- popoverController.show();
- },
- ),
- popupBuilder: (BuildContext popoverContext) {
- return BoardSettingListPopover(
- settingContext: widget.settingContext,
- popoverController: popoverController,
- );
- },
- );
- }
- }
|