mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
fix: rebuilding node widgets when the subtype changes
This commit is contained in:
parent
6eb347a096
commit
1039c5517f
@ -13,8 +13,9 @@ class Node extends ChangeNotifier with LinkedListEntry<Node> {
|
||||
String? get subtype {
|
||||
// TODO: make 'subtype' as a const value.
|
||||
if (attributes.containsKey('subtype')) {
|
||||
assert(attributes['subtype'] is String, 'subtype must be a [String]');
|
||||
return attributes['subtype'] as String;
|
||||
assert(attributes['subtype'] is String?,
|
||||
'subtype must be a [String] or [null]');
|
||||
return attributes['subtype'] as String?;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -63,12 +64,16 @@ class Node extends ChangeNotifier with LinkedListEntry<Node> {
|
||||
}
|
||||
|
||||
void updateAttributes(Attributes attributes) {
|
||||
bool shouldNotifyParent =
|
||||
this.attributes['subtype'] != attributes['subtype'];
|
||||
|
||||
for (final attribute in attributes.entries) {
|
||||
this.attributes[attribute.key] = attribute.value;
|
||||
}
|
||||
|
||||
// Notify the new attributes
|
||||
parent?.notifyListeners();
|
||||
// if attributes contains 'subtype', should notify parent to rebuild node
|
||||
// else, just notify current node.
|
||||
shouldNotifyParent ? parent?.notifyListeners() : notifyListeners();
|
||||
}
|
||||
|
||||
Node? childAtIndex(int index) {
|
||||
|
@ -51,7 +51,7 @@ class StateTree {
|
||||
if (updatedNode == null) {
|
||||
return null;
|
||||
}
|
||||
final previousAttributes = {...updatedNode.attributes};
|
||||
final previousAttributes = Attributes.from(updatedNode.attributes);
|
||||
updatedNode.updateAttributes(attributes);
|
||||
return previousAttributes;
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ class EditorState {
|
||||
void update(Node node, Attributes attributes) {
|
||||
_applyOperation(UpdateOperation(
|
||||
path: node.path,
|
||||
attributes: Attributes.from(attributes)..addAll(attributes),
|
||||
attributes: Attributes.from(node.attributes)..addAll(attributes),
|
||||
oldAttributes: node.attributes,
|
||||
));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user