startEditing method
void
startEditing(
- MeshElement element,
- String attributeName
)
Implementation
void startEditing(docs.MeshElement element, String attributeName) {
String text = element.attributes[attributeName] ?? "";
_controller = TextEditingController(text: text);
_controller!.selection = TextSelection(baseOffset: 0, extentOffset: text.length);
editingValue = _controller!.text;
_editing = element;
_editingAttribute = attributeName;
_editingFocusNode?.dispose();
_editingFocusNode = FocusNode(
onKeyEvent: (_, evt) {
if (evt.logicalKey == LogicalKeyboardKey.escape) {
_editing = null;
_editingAttribute = null;
notifyListeners();
return KeyEventResult.handled;
} else if (evt.logicalKey == LogicalKeyboardKey.enter) {
_editingFocusNode!.unfocus();
_editing = null;
_editingAttribute = null;
notifyListeners();
}
return KeyEventResult.ignored;
},
);
_editingFocusNode!.requestFocus();
_editingFocusNode!.addListener(() {
if (!_editingFocusNode!.hasFocus) {
element.setAttribute(attributeName, editingValue);
_editing = null;
_editingAttribute = null;
notifyListeners();
}
});
notifyListeners();
}