diff --git a/lib/src/widgets/toolbar/link_dialog.dart b/lib/src/widgets/toolbar/link_dialog.dart index c3e314fd..8b411577 100644 --- a/lib/src/widgets/toolbar/link_dialog.dart +++ b/lib/src/widgets/toolbar/link_dialog.dart @@ -4,16 +4,26 @@ import '../../models/themes/quill_dialog_theme.dart'; import '../../translations/toolbar.i18n.dart'; class LinkDialog extends StatefulWidget { - const LinkDialog({this.dialogTheme, Key? key}) : super(key: key); + const LinkDialog({this.dialogTheme, this.link, Key? key}) + : super(key: key); final QuillDialogTheme? dialogTheme; + final String? link; @override LinkDialogState createState() => LinkDialogState(); } class LinkDialogState extends State { - String _link = ''; + late String _link; + late TextEditingController _controller; + + @override + void initState() { + super.initState(); + _link = widget.link ?? ''; + _controller = TextEditingController(text: _link); + } @override Widget build(BuildContext context) { @@ -27,6 +37,7 @@ class LinkDialogState extends State { floatingLabelStyle: widget.dialogTheme?.labelTextStyle), autofocus: true, onChanged: _linkChanged, + controller: _controller, ), actions: [ TextButton( diff --git a/lib/src/widgets/toolbar/link_style_button.dart b/lib/src/widgets/toolbar/link_style_button.dart index 170b084d..7d3887ef 100644 --- a/lib/src/widgets/toolbar/link_style_button.dart +++ b/lib/src/widgets/toolbar/link_style_button.dart @@ -99,7 +99,10 @@ class _LinkStyleButtonState extends State { showDialog( context: context, builder: (ctx) { - return LinkDialog(dialogTheme: widget.dialogTheme); + final link = widget.controller + .getSelectionStyle() + .attributes[Attribute.link.key]?.value; + return LinkDialog(dialogTheme: widget.dialogTheme, link: link); }, ).then(_linkSubmitted); }