| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | 
							- import 'package:flutter_quill/flutter_quill.dart';
 
- import 'package:flutter_quill/models/documents/style.dart';
 
- import 'package:flutter/material.dart';
 
- import 'package:app_flowy/generated/locale_keys.g.dart';
 
- import 'package:easy_localization/easy_localization.dart';
 
- import 'toolbar_icon_button.dart';
 
- class FlowyHeaderStyleButton extends StatefulWidget {
 
-   const FlowyHeaderStyleButton({
 
-     required this.controller,
 
-     this.iconSize = defaultIconSize,
 
-     Key? key,
 
-   }) : super(key: key);
 
-   final QuillController controller;
 
-   final double iconSize;
 
-   @override
 
-   _FlowyHeaderStyleButtonState createState() => _FlowyHeaderStyleButtonState();
 
- }
 
- class _FlowyHeaderStyleButtonState extends State<FlowyHeaderStyleButton> {
 
-   Attribute? _value;
 
-   Style get _selectionStyle => widget.controller.getSelectionStyle();
 
-   @override
 
-   void initState() {
 
-     super.initState();
 
-     setState(() {
 
-       _value = _selectionStyle.attributes[Attribute.header.key] ?? Attribute.header;
 
-     });
 
-     widget.controller.addListener(_didChangeEditingValue);
 
-   }
 
-   @override
 
-   Widget build(BuildContext context) {
 
-     final _valueToText = <Attribute, String>{
 
-       Attribute.h1: 'H1',
 
-       Attribute.h2: 'H2',
 
-       Attribute.h3: 'H3',
 
-     };
 
-     final _valueAttribute = <Attribute>[Attribute.h1, Attribute.h2, Attribute.h3];
 
-     final _valueString = <String>['H1', 'H2', 'H3'];
 
-     final _attributeImageName = <String>['editor/H1', 'editor/H2', 'editor/H3'];
 
-     return Row(
 
-       mainAxisSize: MainAxisSize.min,
 
-       children: List.generate(3, (index) {
 
-         // final child =
 
-         //     _valueToText[_value] == _valueString[index] ? svg('editor/H1', color: Colors.white) : svg('editor/H1');
 
-         final headerTitle = "${LocaleKeys.toolbar_header.tr()} ${index + 1}";
 
-         final _isToggled = _valueToText[_value] == _valueString[index];
 
-         return ToolbarIconButton(
 
-           onPressed: () {
 
-             if (_isToggled) {
 
-               widget.controller.formatSelection(Attribute.header);
 
-             } else {
 
-               widget.controller.formatSelection(_valueAttribute[index]);
 
-             }
 
-           },
 
-           width: widget.iconSize * kIconButtonFactor,
 
-           iconName: _attributeImageName[index],
 
-           isToggled: _isToggled,
 
-           tooltipText: headerTitle,
 
-         );
 
-       }),
 
-     );
 
-   }
 
-   void _didChangeEditingValue() {
 
-     setState(() {
 
-       _value = _selectionStyle.attributes[Attribute.header.key] ?? Attribute.header;
 
-     });
 
-   }
 
-   @override
 
-   void didUpdateWidget(covariant FlowyHeaderStyleButton oldWidget) {
 
-     super.didUpdateWidget(oldWidget);
 
-     if (oldWidget.controller != widget.controller) {
 
-       oldWidget.controller.removeListener(_didChangeEditingValue);
 
-       widget.controller.addListener(_didChangeEditingValue);
 
-       _value = _selectionStyle.attributes[Attribute.header.key] ?? Attribute.header;
 
-     }
 
-   }
 
-   @override
 
-   void dispose() {
 
-     widget.controller.removeListener(_didChangeEditingValue);
 
-     super.dispose();
 
-   }
 
- }
 
 
  |