| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | import 'package:app_flowy/plugins/grid/application/field/field_controller.dart';import 'package:app_flowy/plugins/grid/presentation/layout/sizes.dart';import 'package:appflowy_popover/appflowy_popover.dart';import 'package:easy_localization/easy_localization.dart';import 'package:flowy_infra/theme_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)),      margin: EdgeInsets.zero,      child: FlowyTextButton(        LocaleKeys.settings_title.tr(),        fillColor: Colors.transparent,        hoverColor: AFThemeExtension.of(context).lightGreyHover,        padding: GridSize.typeOptionContentInsets,        onPressed: () {          popoverController.show();        },      ),      popupBuilder: (BuildContext popoverContext) {        return BoardSettingListPopover(          settingContext: widget.settingContext,          popoverController: popoverController,        );      },    );  }}
 |