Remove extraneous toolbar dividers in certain configuration

Closes #193.
pull/249/head
Till Friebe 4 years ago
parent e2ab4df8cd
commit 3ca9e966ac
  1. 368
      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,
),
), ),
Visibility( if (showHistory)
visible: showHistory, HistoryButton(
child: HistoryButton( icon: Icons.redo_outlined,
icon: Icons.redo_outlined, iconSize: toolbarIconSize,
iconSize: toolbarIconSize, controller: controller,
controller: controller, undo: false,
undo: false,
),
), ),
const SizedBox(width: 0.6), if (showBoldButton)
Visibility( ToggleStyleButton(
visible: showBoldButton, attribute: Attribute.bold,
child: ToggleStyleButton( icon: Icons.format_bold,
attribute: Attribute.bold, iconSize: toolbarIconSize,
icon: Icons.format_bold, controller: controller,
iconSize: toolbarIconSize,
controller: controller,
),
), ),
const SizedBox(width: 0.6), if (showItalicButton)
Visibility( ToggleStyleButton(
visible: showItalicButton, attribute: Attribute.italic,
child: ToggleStyleButton( icon: Icons.format_italic,
attribute: Attribute.italic, iconSize: toolbarIconSize,
icon: Icons.format_italic, controller: controller,
iconSize: toolbarIconSize,
controller: controller,
),
), ),
const SizedBox(width: 0.6), if (showUnderLineButton)
Visibility( ToggleStyleButton(
visible: showUnderLineButton, attribute: Attribute.underline,
child: ToggleStyleButton( icon: Icons.format_underline,
attribute: Attribute.underline, iconSize: toolbarIconSize,
icon: Icons.format_underline, controller: controller,
iconSize: toolbarIconSize,
controller: controller,
),
), ),
const SizedBox(width: 0.6), if (showStrikeThrough)
Visibility( ToggleStyleButton(
visible: showStrikeThrough, attribute: Attribute.strikeThrough,
child: ToggleStyleButton( icon: Icons.format_strikethrough,
attribute: Attribute.strikeThrough, iconSize: toolbarIconSize,
icon: Icons.format_strikethrough, controller: controller,
iconSize: toolbarIconSize,
controller: controller,
),
), ),
const SizedBox(width: 0.6), if (showColorButton)
Visibility( ColorButton(
visible: showColorButton, icon: Icons.color_lens,
child: ColorButton( iconSize: toolbarIconSize,
icon: Icons.color_lens, controller: controller,
iconSize: toolbarIconSize, background: false,
controller: controller,
background: false,
),
), ),
const SizedBox(width: 0.6), if (showBackgroundColorButton)
Visibility( ColorButton(
visible: showBackgroundColorButton, icon: Icons.format_color_fill,
child: ColorButton( iconSize: toolbarIconSize,
icon: Icons.format_color_fill, controller: controller,
iconSize: toolbarIconSize, background: true,
controller: controller,
background: true,
),
), ),
const SizedBox(width: 0.6), if (showClearFormat)
Visibility( ClearFormatButton(
visible: showClearFormat, icon: Icons.format_clear,
child: ClearFormatButton( iconSize: toolbarIconSize,
icon: Icons.format_clear, controller: controller,
iconSize: toolbarIconSize,
controller: controller,
),
), ),
const SizedBox(width: 0.6), if (onImagePickCallback != null)
Visibility( ImageButton(
visible: onImagePickCallback != null, icon: Icons.image,
child: ImageButton( iconSize: toolbarIconSize,
icon: Icons.image, controller: controller,
iconSize: toolbarIconSize, imageSource: ImageSource.gallery,
controller: controller, onImagePickCallback: onImagePickCallback,
imageSource: ImageSource.gallery,
onImagePickCallback: onImagePickCallback,
),
), ),
const SizedBox(width: 0.6), if (onImagePickCallback != null)
Visibility( ImageButton(
visible: onImagePickCallback != null, icon: Icons.photo_camera,
child: ImageButton( iconSize: toolbarIconSize,
icon: Icons.photo_camera, controller: controller,
iconSize: toolbarIconSize, imageSource: ImageSource.camera,
controller: controller, onImagePickCallback: onImagePickCallback,
imageSource: ImageSource.camera,
onImagePickCallback: onImagePickCallback,
),
), ),
Visibility( if (isButtonGroupShown[0] &&
visible: showHeaderStyle, (isButtonGroupShown[1] ||
child: VerticalDivider( isButtonGroupShown[2] ||
indent: 12, isButtonGroupShown[3] ||
endIndent: 12, isButtonGroupShown[4]))
color: Colors.grey.shade400, VerticalDivider(
), indent: 12,
endIndent: 12,
color: Colors.grey.shade400,
), ),
Visibility( if (showHeaderStyle)
visible: showHeaderStyle, SelectHeaderStyleButton(
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,
),
), ),
Visibility( if (showListBullets)
visible: showListBullets, ToggleStyleButton(
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,
),
), ),
Visibility( if (showListCheck)
visible: showListCheck, ToggleCheckListButton(
child: ToggleCheckListButton( attribute: Attribute.unchecked,
attribute: Attribute.unchecked, controller: controller,
controller: controller, icon: Icons.check_box,
icon: Icons.check_box, iconSize: toolbarIconSize,
iconSize: toolbarIconSize,
),
), ),
Visibility( if (showCodeBlock)
visible: showCodeBlock, ToggleStyleButton(
child: ToggleStyleButton( attribute: Attribute.codeBlock,
attribute: Attribute.codeBlock, controller: controller,
controller: controller, icon: Icons.code,
icon: Icons.code, iconSize: toolbarIconSize,
iconSize: toolbarIconSize,
),
), ),
Visibility( if (isButtonGroupShown[2] &&
visible: !showListNumbers && (isButtonGroupShown[3] || isButtonGroupShown[4]))
!showListBullets && VerticalDivider(
!showListCheck && indent: 12,
!showCodeBlock, endIndent: 12,
child: VerticalDivider( color: Colors.grey.shade400,
indent: 12,
endIndent: 12,
color: Colors.grey.shade400,
),
), ),
Visibility( if (showQuote)
visible: showQuote, ToggleStyleButton(
child: ToggleStyleButton( attribute: Attribute.blockQuote,
attribute: Attribute.blockQuote, controller: controller,
controller: controller, icon: Icons.format_quote,
icon: Icons.format_quote, iconSize: toolbarIconSize,
iconSize: toolbarIconSize,
),
), ),
Visibility( if (showIndent)
visible: showIndent, IndentButton(
child: IndentButton( icon: Icons.format_indent_increase,
icon: Icons.format_indent_increase, iconSize: toolbarIconSize,
iconSize: toolbarIconSize, controller: controller,
controller: controller, isIncrease: true,
isIncrease: true,
),
), ),
Visibility( if (showIndent)
visible: showIndent, IndentButton(
child: IndentButton( icon: Icons.format_indent_decrease,
icon: Icons.format_indent_decrease, iconSize: toolbarIconSize,
iconSize: toolbarIconSize, controller: controller,
controller: controller, isIncrease: false,
isIncrease: false,
),
), ),
Visibility( if (isButtonGroupShown[3] && isButtonGroupShown[4])
visible: showQuote, VerticalDivider(
child: VerticalDivider( indent: 12,
indent: 12, endIndent: 12,
endIndent: 12, color: Colors.grey.shade400,
color: Colors.grey.shade400,
),
), ),
Visibility( if (showLink)
visible: showLink, LinkStyleButton(
child: LinkStyleButton( controller: controller,
controller: controller, iconSize: toolbarIconSize,
iconSize: toolbarIconSize,
),
), ),
Visibility( if (showHorizontalRule)
visible: showHorizontalRule, InsertEmbedButton(
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