Remove extraneous toolbar dividers in certain configuration

Closes #193.
pull/249/head
Till Friebe 4 years ago
parent e2ab4df8cd
commit 3ca9e966ac
  1. 184
      lib/src/widgets/toolbar.dart

@ -71,237 +71,203 @@ class QuillToolbar extends StatelessWidget implements PreferredSizeWidget {
OnImagePickCallback? onImagePickCallback, OnImagePickCallback? onImagePickCallback,
Key? key, Key? key,
}) { }) {
final isButtonGroupShown = [
showHistory ||
showBoldButton ||
showItalicButton ||
showUnderLineButton ||
showStrikeThrough ||
showColorButton ||
showBackgroundColorButton ||
showClearFormat ||
onImagePickCallback != null,
showHeaderStyle,
showListNumbers || showListBullets || showListCheck || showCodeBlock,
showQuote || showIndent,
showLink || showHorizontalRule
];
return QuillToolbar( return QuillToolbar(
key: key, key: key,
toolBarHeight: toolbarIconSize * 2, toolBarHeight: toolbarIconSize * 2,
children: [ children: [
Visibility( if (showHistory)
visible: showHistory, HistoryButton(
child: HistoryButton(
icon: Icons.undo_outlined, icon: Icons.undo_outlined,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
undo: true, undo: true,
), ),
), if (showHistory)
Visibility( HistoryButton(
visible: showHistory,
child: HistoryButton(
icon: Icons.redo_outlined, icon: Icons.redo_outlined,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
undo: false, undo: false,
), ),
), if (showBoldButton)
const SizedBox(width: 0.6), ToggleStyleButton(
Visibility(
visible: showBoldButton,
child: ToggleStyleButton(
attribute: Attribute.bold, attribute: Attribute.bold,
icon: Icons.format_bold, icon: Icons.format_bold,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
), ),
), if (showItalicButton)
const SizedBox(width: 0.6), ToggleStyleButton(
Visibility(
visible: showItalicButton,
child: ToggleStyleButton(
attribute: Attribute.italic, attribute: Attribute.italic,
icon: Icons.format_italic, icon: Icons.format_italic,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
), ),
), if (showUnderLineButton)
const SizedBox(width: 0.6), ToggleStyleButton(
Visibility(
visible: showUnderLineButton,
child: ToggleStyleButton(
attribute: Attribute.underline, attribute: Attribute.underline,
icon: Icons.format_underline, icon: Icons.format_underline,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
), ),
), if (showStrikeThrough)
const SizedBox(width: 0.6), ToggleStyleButton(
Visibility(
visible: showStrikeThrough,
child: ToggleStyleButton(
attribute: Attribute.strikeThrough, attribute: Attribute.strikeThrough,
icon: Icons.format_strikethrough, icon: Icons.format_strikethrough,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
), ),
), if (showColorButton)
const SizedBox(width: 0.6), ColorButton(
Visibility(
visible: showColorButton,
child: ColorButton(
icon: Icons.color_lens, icon: Icons.color_lens,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
background: false, background: false,
), ),
), if (showBackgroundColorButton)
const SizedBox(width: 0.6), ColorButton(
Visibility(
visible: showBackgroundColorButton,
child: ColorButton(
icon: Icons.format_color_fill, icon: Icons.format_color_fill,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
background: true, background: true,
), ),
), if (showClearFormat)
const SizedBox(width: 0.6), ClearFormatButton(
Visibility(
visible: showClearFormat,
child: ClearFormatButton(
icon: Icons.format_clear, icon: Icons.format_clear,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
), ),
), if (onImagePickCallback != null)
const SizedBox(width: 0.6), ImageButton(
Visibility(
visible: onImagePickCallback != null,
child: ImageButton(
icon: Icons.image, icon: Icons.image,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
imageSource: ImageSource.gallery, imageSource: ImageSource.gallery,
onImagePickCallback: onImagePickCallback, onImagePickCallback: onImagePickCallback,
), ),
), if (onImagePickCallback != null)
const SizedBox(width: 0.6), ImageButton(
Visibility(
visible: onImagePickCallback != null,
child: ImageButton(
icon: Icons.photo_camera, icon: Icons.photo_camera,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
imageSource: ImageSource.camera, imageSource: ImageSource.camera,
onImagePickCallback: onImagePickCallback, onImagePickCallback: onImagePickCallback,
), ),
), if (isButtonGroupShown[0] &&
Visibility( (isButtonGroupShown[1] ||
visible: showHeaderStyle, isButtonGroupShown[2] ||
child: VerticalDivider( isButtonGroupShown[3] ||
isButtonGroupShown[4]))
VerticalDivider(
indent: 12, indent: 12,
endIndent: 12, endIndent: 12,
color: Colors.grey.shade400, color: Colors.grey.shade400,
), ),
), if (showHeaderStyle)
Visibility( SelectHeaderStyleButton(
visible: showHeaderStyle,
child: SelectHeaderStyleButton(
controller: controller, controller: controller,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
), ),
), if (isButtonGroupShown[1] &&
(isButtonGroupShown[2] ||
isButtonGroupShown[3] ||
isButtonGroupShown[4]))
VerticalDivider( VerticalDivider(
indent: 12, indent: 12,
endIndent: 12, endIndent: 12,
color: Colors.grey.shade400, color: Colors.grey.shade400,
), ),
Visibility( if (showListNumbers)
visible: showListNumbers, ToggleStyleButton(
child: ToggleStyleButton(
attribute: Attribute.ol, attribute: Attribute.ol,
controller: controller, controller: controller,
icon: Icons.format_list_numbered, icon: Icons.format_list_numbered,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
), ),
), if (showListBullets)
Visibility( ToggleStyleButton(
visible: showListBullets,
child: ToggleStyleButton(
attribute: Attribute.ul, attribute: Attribute.ul,
controller: controller, controller: controller,
icon: Icons.format_list_bulleted, icon: Icons.format_list_bulleted,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
), ),
), if (showListCheck)
Visibility( ToggleCheckListButton(
visible: showListCheck,
child: ToggleCheckListButton(
attribute: Attribute.unchecked, attribute: Attribute.unchecked,
controller: controller, controller: controller,
icon: Icons.check_box, icon: Icons.check_box,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
), ),
), if (showCodeBlock)
Visibility( ToggleStyleButton(
visible: showCodeBlock,
child: ToggleStyleButton(
attribute: Attribute.codeBlock, attribute: Attribute.codeBlock,
controller: controller, controller: controller,
icon: Icons.code, icon: Icons.code,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
), ),
), if (isButtonGroupShown[2] &&
Visibility( (isButtonGroupShown[3] || isButtonGroupShown[4]))
visible: !showListNumbers && VerticalDivider(
!showListBullets &&
!showListCheck &&
!showCodeBlock,
child: VerticalDivider(
indent: 12, indent: 12,
endIndent: 12, endIndent: 12,
color: Colors.grey.shade400, color: Colors.grey.shade400,
), ),
), if (showQuote)
Visibility( ToggleStyleButton(
visible: showQuote,
child: ToggleStyleButton(
attribute: Attribute.blockQuote, attribute: Attribute.blockQuote,
controller: controller, controller: controller,
icon: Icons.format_quote, icon: Icons.format_quote,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
), ),
), if (showIndent)
Visibility( IndentButton(
visible: showIndent,
child: IndentButton(
icon: Icons.format_indent_increase, icon: Icons.format_indent_increase,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
isIncrease: true, isIncrease: true,
), ),
), if (showIndent)
Visibility( IndentButton(
visible: showIndent,
child: IndentButton(
icon: Icons.format_indent_decrease, icon: Icons.format_indent_decrease,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
controller: controller, controller: controller,
isIncrease: false, isIncrease: false,
), ),
), if (isButtonGroupShown[3] && isButtonGroupShown[4])
Visibility( VerticalDivider(
visible: showQuote,
child: VerticalDivider(
indent: 12, indent: 12,
endIndent: 12, endIndent: 12,
color: Colors.grey.shade400, color: Colors.grey.shade400,
), ),
), if (showLink)
Visibility( LinkStyleButton(
visible: showLink,
child: LinkStyleButton(
controller: controller, controller: controller,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
), ),
), if (showHorizontalRule)
Visibility( InsertEmbedButton(
visible: showHorizontalRule,
child: InsertEmbedButton(
controller: controller, controller: controller,
icon: Icons.horizontal_rule, icon: Icons.horizontal_rule,
iconSize: toolbarIconSize, iconSize: toolbarIconSize,
), ),
), ],
]); );
} }
final List<Widget> children; final List<Widget> children;

Loading…
Cancel
Save