From 97cb20298fb20a60f40f9133f22d9904e8ffe576 Mon Sep 17 00:00:00 2001 From: X Code Date: Mon, 31 Jan 2022 16:58:24 -0800 Subject: [PATCH] Refactor code --- lib/src/models/documents/attribute.dart | 8 +++++++ lib/src/utils/string.dart | 6 ++++-- .../widgets/embeds/default_embed_builder.dart | 21 ++++++++++++------- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/lib/src/models/documents/attribute.dart b/lib/src/models/documents/attribute.dart index dc782098..ed848d79 100644 --- a/lib/src/models/documents/attribute.dart +++ b/lib/src/models/documents/attribute.dart @@ -89,6 +89,14 @@ class Attribute { static final ScriptAttribute script = ScriptAttribute(''); + static const String mobileWidth = 'mobileWidth'; + + static const String mobileHeight = 'mobileHeight'; + + static const String mobileMargin = 'mobileMargin'; + + static const String mobileAlignment = 'mobileAlignment'; + static final Set inlineKeys = { Attribute.bold.key, Attribute.italic.key, diff --git a/lib/src/utils/string.dart b/lib/src/utils/string.dart index 3831c601..5acadb9b 100644 --- a/lib/src/utils/string.dart +++ b/lib/src/utils/string.dart @@ -1,5 +1,7 @@ import 'package:flutter/cupertino.dart'; +import '../models/documents/attribute.dart'; + Map parseKeyValuePairs(String s, Set targetKeys) { final result = {}; final pairs = s.split(';'); @@ -29,8 +31,8 @@ String replaceStyleString(String s, double width, double height) { result[_key] = pair.substring(_index + 1).trim(); } - result['mobileWidth'] = width.toString(); - result['mobileHeight'] = height.toString(); + result[Attribute.mobileWidth] = width.toString(); + result[Attribute.mobileHeight] = height.toString(); final sb = StringBuffer(); for (final pair in result.entries) { sb diff --git a/lib/src/widgets/embeds/default_embed_builder.dart b/lib/src/widgets/embeds/default_embed_builder.dart index 7dc7b84a..3a25ff83 100644 --- a/lib/src/widgets/embeds/default_embed_builder.dart +++ b/lib/src/widgets/embeds/default_embed_builder.dart @@ -29,19 +29,24 @@ Widget defaultEmbedBuilder(BuildContext context, QuillController controller, var image; final style = node.style.attributes['style']; if (isMobile() && style != null) { - final _attrs = parseKeyValuePairs(style.value.toString(), - {'mobileWidth', 'mobileHeight', 'mobileMargin', 'mobileAlignment'}); + final _attrs = parseKeyValuePairs(style.value.toString(), { + Attribute.mobileWidth, + Attribute.mobileHeight, + Attribute.mobileMargin, + Attribute.mobileAlignment + }); if (_attrs.isNotEmpty) { assert( - _attrs['mobileWidth'] != null && _attrs['mobileHeight'] != null, + _attrs[Attribute.mobileWidth] != null && + _attrs[Attribute.mobileHeight] != null, 'mobileWidth and mobileHeight must be specified'); - final w = double.parse(_attrs['mobileWidth']!); - final h = double.parse(_attrs['mobileHeight']!); + final w = double.parse(_attrs[Attribute.mobileWidth]!); + final h = double.parse(_attrs[Attribute.mobileHeight]!); _widthHeight = Tuple2(w, h); - final m = _attrs['mobileMargin'] == null + final m = _attrs[Attribute.mobileMargin] == null ? 0.0 - : double.parse(_attrs['mobileMargin']!); - final a = getAlignment(_attrs['mobileAlignment']); + : double.parse(_attrs[Attribute.mobileMargin]!); + final a = getAlignment(_attrs[Attribute.mobileAlignment]); image = Padding( padding: EdgeInsets.all(m), child: imageByUrl(imageUrl, width: w, height: h, alignment: a));