Match new header buttons UI to ToggleStyleButtons. (#135)

pull/141/head
Gagan Yadav 4 years ago committed by GitHub
parent 96b5be1518
commit 2cbc99287b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 64
      lib/widgets/toolbar.dart

@ -370,10 +370,8 @@ Widget defaultToggleStyleButtonBuilder(
class SelectHeaderStyleButton extends StatefulWidget {
final QuillController controller;
final double headerFontSize;
const SelectHeaderStyleButton(
{required this.controller, this.headerFontSize = 18.0, Key? key})
const SelectHeaderStyleButton({required this.controller, Key? key})
: super(key: key);
@override
@ -426,13 +424,12 @@ class _SelectHeaderStyleButtonState extends State<SelectHeaderStyleButton> {
@override
Widget build(BuildContext context) {
return _selectHeadingStyleButtonBuilder(
context, _value, _selectAttribute, widget.headerFontSize);
return _selectHeadingStyleButtonBuilder(context, _value, _selectAttribute);
}
}
Widget _selectHeadingStyleButtonBuilder(BuildContext context, Attribute? value,
ValueChanged<Attribute?> onSelected, double headerFontSize) {
ValueChanged<Attribute?> onSelected) {
final Map<Attribute, String> _valueToText = {
Attribute.header: 'N',
Attribute.h1: 'H1',
@ -449,33 +446,43 @@ Widget _selectHeadingStyleButtonBuilder(BuildContext context, Attribute? value,
List<String> _valueString = ['N', 'H1', 'H2', 'H3'];
final theme = Theme.of(context);
final style = theme.textTheme.caption?.copyWith(
fontWeight: FontWeight.bold,
fontSize: (15.0 / iconSize) * headerFontSize,
final style = TextStyle(
fontWeight: FontWeight.w600,
fontSize: iconSize * 0.7,
);
final width = theme.buttonTheme.constraints.minHeight + 4.0;
final constraints = theme.buttonTheme.constraints.copyWith(
minWidth: width,
maxHeight: theme.buttonTheme.constraints.minHeight,
);
final radius = const BorderRadius.all(Radius.circular(3.0));
return Row(
mainAxisSize: MainAxisSize.min,
children: List.generate(4, (index) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 1.0, vertical: 6.0),
child: RawMaterialButton(
shape: RoundedRectangleBorder(borderRadius: radius),
elevation: 0.0,
fillColor: _valueToText[value] == _valueString[index]
? Theme.of(context).accentColor.withOpacity(0.4)
: Colors.white,
constraints: constraints,
onPressed: () {
onSelected(_valueAttribute[index]);
},
child: Text(_valueString[index], style: style),
padding: const EdgeInsets.symmetric(horizontal: !kIsWeb ? 1.0 : 5.0),
child: ConstrainedBox(
constraints: BoxConstraints.tightFor(
width: iconSize * 1.77,
height: iconSize * 1.77,
),
child: RawMaterialButton(
hoverElevation: 0,
highlightElevation: 0,
elevation: 0.0,
visualDensity: VisualDensity.compact,
shape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(2)),
fillColor: _valueToText[value] == _valueString[index]
? theme.toggleableActiveColor
: theme.canvasColor,
onPressed: () {
onSelected(_valueAttribute[index]);
},
child: Text(
_valueString[index],
style: style.copyWith(
color: _valueToText[value] == _valueString[index]
? theme.primaryIconTheme.color
: theme.iconTheme.color,
),
),
),
),
);
}),
@ -1029,8 +1036,7 @@ class QuillToolbar extends StatefulWidget implements PreferredSizeWidget {
indent: 12, endIndent: 12, color: Colors.grey.shade400)),
Visibility(
visible: showHeaderStyle,
child: SelectHeaderStyleButton(
controller: controller, headerFontSize: toolbarIconSize)),
child: SelectHeaderStyleButton(controller: controller)),
VerticalDivider(indent: 12, endIndent: 12, color: Colors.grey.shade400),
Visibility(
visible: showListNumbers,

Loading…
Cancel
Save