render method
ValueProvider
render(
- JSONRender render,
- DivElement output,
- dynamic node,
- dynamic nodeOriginal,
- NodeKey nodeKey,
override
Implementation
@override
ValueProvider render(JSONRender render, DivElement output, dynamic node,
dynamic nodeOriginal, NodeKey nodeKey) {
var geo = parseLatitudeLongitude(node);
var nodeIsMap = node is Map;
Element geoElem;
ValueProvider valueProvider;
if (render.renderMode == JSONRenderMode.input) {
var geoStr = geo.toString();
var input = InputElement()
..value = geoStr
..type = 'text';
input.onDoubleClick.listen((e) {
var geo2 = Geolocation.fromCoords(input.value!);
openGoogleMaps(geo2);
});
var button = SpanElement()
..innerHtml = ' ⊕'
..style.fontSize = '125%'
..style.cursor = 'pointer';
button.onClick.listen((e) async {
print('Getting CurrentGeolocation...');
var myGeolocation = await Geolocation.getCurrentGeolocation();
print('CurrentGeolocation: $myGeolocation');
input.value = myGeolocation.toString();
});
geoElem = createDivInline();
geoElem.children.add(input);
geoElem.children.add(button);
valueProvider = (parent) {
final value = input.value!;
var geo2 = Geolocation.fromCoords(value)!;
if (nodeIsMap) {
return {'latitude': geo2.latitude, 'longitude': geo2.longitude};
} else {
return geo2;
}
};
} else {
var geoStr = geo.toString();
var elem = SpanElement()..text = geoStr;
elem.onClick.listen((e) {
copyElementToClipboard(elem);
openGoogleMaps(geo);
});
geoElem = elem;
valueProvider = (parent) => nodeOriginal;
}
output.children.add(SpanElement()..innerHtml = '📍');
output.children.add(geoElem);
this.applyCSS(render, output, extraElements: [geoElem]);
return valueProvider;
}