Update `LinkStyleDialog` to use `Wrap` conditionally

pull/1185/head
bambinoua 2 years ago
parent ee1bc2cc83
commit dcde635cf2
  1. 74
      lib/src/widgets/toolbar/link_style_button2.dart

@ -7,6 +7,7 @@ import '../../../translations.dart';
import '../../models/documents/attribute.dart'; import '../../models/documents/attribute.dart';
import '../../models/themes/quill_dialog_theme.dart'; import '../../models/themes/quill_dialog_theme.dart';
import '../../models/themes/quill_icon_theme.dart'; import '../../models/themes/quill_icon_theme.dart';
import '../../utils/widgets.dart';
import '../controller.dart'; import '../controller.dart';
import '../link.dart'; import '../link.dart';
import '../toolbar.dart'; import '../toolbar.dart';
@ -232,8 +233,10 @@ class _LinkStyleDialogState extends State<LinkStyleDialog> {
_isEditMode = _link.isNotEmpty; _isEditMode = _link.isNotEmpty;
_linkController = TextEditingController.fromValue( _linkController = TextEditingController.fromValue(
TextEditingValue( TextEditingValue(
text: _isEditMode ? _link : _text, text: _isEditMode ? _link : '',
selection: TextSelection(baseOffset: 0, extentOffset: _text.length), selection: _isEditMode
? TextSelection(baseOffset: 0, extentOffset: _link.length)
: const TextSelection.collapsed(offset: 0),
), ),
); );
} }
@ -255,27 +258,23 @@ class _LinkStyleDialogState extends State<LinkStyleDialog> {
.style .style
?.copyWith(fixedSize: MaterialStatePropertyAll(widget.buttonSize)) ?.copyWith(fixedSize: MaterialStatePropertyAll(widget.buttonSize))
: widget.dialogTheme?.buttonStyle; : widget.dialogTheme?.buttonStyle;
;
return Dialog( final isWrappable = widget.dialogTheme?.isWrappable ?? false;
backgroundColor: widget.dialogTheme?.dialogBackgroundColor,
shape: widget.dialogTheme?.shape ?? final children = _isEditMode
DialogTheme.of(context).shape ?? ? [
RoundedRectangleBorder(borderRadius: BorderRadius.circular(4)),
child: ConstrainedBox(
constraints: constraints,
child: Padding(
padding: widget.contentPadding,
child: Row(
children: [
if (_isEditMode) ...[
Text(widget.editLinkLabel ?? 'Visit link'.i18n), Text(widget.editLinkLabel ?? 'Visit link'.i18n),
Expanded( UtilityWidgets.maybeWidget(
enabled: !isWrappable,
wrapper: (child) => Expanded(
child: Align( child: Align(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: child,
),
),
child: Padding( child: Padding(
padding: EdgeInsets.symmetric( padding:
horizontal: widget.childrenSpacing), EdgeInsets.symmetric(horizontal: widget.childrenSpacing),
child: Link( child: Link(
uri: Uri.parse(_linkController.text), uri: Uri.parse(_linkController.text),
builder: (context, followLink) { builder: (context, followLink) {
@ -288,8 +287,7 @@ class _LinkStyleDialogState extends State<LinkStyleDialog> {
widget.link!, widget.link!,
textAlign: TextAlign.left, textAlign: TextAlign.left,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: style: widget.dialogTheme?.inputTextStyle?.copyWith(
widget.dialogTheme?.inputTextStyle?.copyWith(
color: widget.linkColor ?? Colors.blue, color: widget.linkColor ?? Colors.blue,
decoration: TextDecoration.underline, decoration: TextDecoration.underline,
), ),
@ -299,7 +297,6 @@ class _LinkStyleDialogState extends State<LinkStyleDialog> {
), ),
), ),
), ),
),
ElevatedButton( ElevatedButton(
onPressed: () { onPressed: () {
setState(() { setState(() {
@ -317,12 +314,17 @@ class _LinkStyleDialogState extends State<LinkStyleDialog> {
child: Text('Remove'.i18n), child: Text('Remove'.i18n),
), ),
), ),
] else ...[ ]
: [
Text(widget.addLinkLabel ?? 'Enter link'.i18n), Text(widget.addLinkLabel ?? 'Enter link'.i18n),
Expanded( UtilityWidgets.maybeWidget(
enabled: !isWrappable,
wrapper: (child) => Expanded(
child: child,
),
child: Padding( child: Padding(
padding: EdgeInsets.symmetric( padding:
horizontal: widget.childrenSpacing), EdgeInsets.symmetric(horizontal: widget.childrenSpacing),
child: TextFormField( child: TextFormField(
controller: _linkController, controller: _linkController,
style: widget.dialogTheme?.inputTextStyle, style: widget.dialogTheme?.inputTextStyle,
@ -343,8 +345,26 @@ class _LinkStyleDialogState extends State<LinkStyleDialog> {
style: buttonStyle, style: buttonStyle,
child: Text('Apply'.i18n), child: Text('Apply'.i18n),
), ),
], ];
],
return Dialog(
backgroundColor: widget.dialogTheme?.dialogBackgroundColor,
shape: widget.dialogTheme?.shape ??
DialogTheme.of(context).shape ??
RoundedRectangleBorder(borderRadius: BorderRadius.circular(4)),
child: ConstrainedBox(
constraints: constraints,
child: Padding(
padding: widget.contentPadding,
child: isWrappable
? Wrap(
alignment: WrapAlignment.center,
crossAxisAlignment: WrapCrossAlignment.center,
runSpacing: widget.dialogTheme?.runSpacing ?? 0.0,
children: children,
)
: Row(
children: children,
), ),
), ),
), ),

Loading…
Cancel
Save