Open altrdev opened 2 years ago
try this
class ExpressionService{
late JavascriptRuntime _flutterJs;
/// constructor
ExpressionService(){
_init();
}
_init(){
try{
/// initialize javascript engine
_flutterJs = getJavascriptRuntime();
}
catch(e,s){
print("error when initialize javascript engine: $e");
print(s);
}
/// initialize javascript map to set value into it
_flutterJs.evaluate("""const value = {};""");
}
/// put value into javascript map
setValueMapper(Map<String, dynamic> valueMap){
valueMap.forEach((key, value){;
_flutterJs.evaluate("""Object.assign(value,{$key: '$value'});""");
});
}
String calculateExpression(String expression){
try {
JsEvalResult jsResult = _flutterJs.evaluate(expression);
return jsResult.stringResult;
} on PlatformException catch (e) {
print("error: $e");
return "";
}
}
dispose(){
_flutterJs.dispose();
}
}
for test
test('test set value to javascript object and calculate expression', () async{
WidgetsFlutterBinding.ensureInitialized();
late ExpressionService expressionService = new ExpressionService();
late DateTime _startTime;
late DateTime _endTime;
print('----------Start----------');
_startTime = DateTime.now();
expressionService.setValueMapper({"first_name": "Yousef"});
expressionService.setValueMapper({"last_name": "Alkhateeb"});
String expected = expressionService.calculateExpression("value.first_name + value.last_name");
expressionService.dispose();
_endTime = DateTime.now();
int duration = _endTime.difference(_startTime).inMilliseconds;
print('----------End: $duration millisecond----------');
expectAsync0((){
expect(expected, "YousefAlkhateeb");
});
});
Hi, I haven't find an alternative in Flutter for make a XSLT transformation. So I tried to follow a Js way. In that case I build a desktop app (Mac) and the code is:
The error is the follow:
Can't find variable: DOMParser at global code@
XSLTProcessor
have the same problemAny ideas to solve?