js_mimicry 0.2.0 copy "js_mimicry: ^0.2.0" to clipboard
js_mimicry: ^0.2.0 copied to clipboard

outdated

Allows the use of Dart classes and objects in javascript. Generates a special proxy classes.

JsMimicry #

Allows the use of Dart classes and objects in javascript. Generates a special proxy classes.

Create javascript API for Dart become easier.

Support:

  • Class inheritance ( with @JsProxy )
  • Named constructors
  • Method
  • Optional positional parameters
  • Optional named parameters
  • Input parameter transform
  • Result mutation
  • Future (via result mutator)
  • Field
  • Getter/Setter

Not support:

  • Factory
  • Operator

Try It Now #

Add the js_mimicry package to your pubspec.yaml file:

dependencies:
  js_mimicry: ">=0.2.0 <0.3.0"

Building and Deploying #

To build a deployable version of your app, add the js_mimicry transformers to your pubspec.yaml file:

transformers:
- js_mimicry

Sample #

##Dart code class Test1{ method1(p1,[p2]){/* code /} method2(p1,p2){/ code */} }

class Test2 extends Test1{
  int method2(p1,p2){/* new logic */}
  String method3(Test1 obj){/* code */}
  Future<int> method4(){/* code */}
  Test1 method5({namedP1, namedP2}){/* code */}
  String method6(int value){/* code */}
}

##Add annotation for class @JsProxy() class Test1{ // ... cut ... }

@JsProxy()
class Test2 extends Test1{ // ... cut ...
}

##Add annotation for transform input parameter String method6(@JsTransform(ANY_TO_INT) int value){/* code */}

static int ANY_TO_INT(Object v){
    if (v is String){
     return int.parse(v);
    }
    return v as int;
}

##Add annotation for mutation result Future @JsMutator(insertParams:const ["resultCb","errorCb"],result:Test2.futureToCallbacks) Future

static futureToCallbacks(Future result,js.JsFunction resultCb,[js.JsFunction errorCb]){
    if (errorCb!=null){
        result = result.catchError((err)=>errorCb.apply([err]));
    }
    result.then((o)=>resultCb.apply([o]));
    return result;
}

##Add annotation for mutation result @JsMutator(result:ANY_TO_STRING) Test1 method5(){/* code */}

static ANY_TO_STRING(v)=>v.toString();

Import to javascript #

import 'dart:js' as js;
main(){
  // Export Test2 class to JS
  Test2Proxy.jsRegistrationPrototype();
  // Create instance Test1
  js.context["dartInstanceTest1"] = JsProxyFactory.toJs((new Test1());
}

Uses in javascript #

// Create Test2 instance, call method5 with named parameters
new Test2().method5({namedP1:"123"});
// call Test1.method1 with optional parameters
dartInstanceTest1.method1("1");

JsProxyFactory methods #

###JsObject toJs(DartClass obj) Create proxy object for Test2 object. ###DartClass toDart(Type dartType, JsObject obj) Convert javascript proxy to real Dart object.

0
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Allows the use of Dart classes and objects in javascript. Generates a special proxy classes.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

analyzer, code_transformers, path

More

Packages that depend on js_mimicry