How can I create a new subclass extends a ButtonEl

2019-07-26 08:05发布

问题:

  1. import dart:html , I can create a new subclass MyButton of ButtonElement with factory constructor ,and add some new function such as getButtonName(){} ...
  2. when it's running ,I get a instance

    MyButton btn=new MyButton()
    
  3. But the instance "btn" runtime type is still ButtonElement, and can't call the getButtonName() function. If I use btn as MyButton then I get this error

    Uncaught CastError: Casting value of type ButtonElement to incompatible type MyButton

Here is the code

    class MyButton extends ButtonElement {   
       factory MyButton(){
        return new ButtonElement();   
       }

       String getButtonName(){
        return "ButtonName";   
       } 
    }

回答1:

Just because this line

return new ButtonElement(); 

is within a factory constructor or MyButton doesn't mean it has any relation to MyButton it still returns new ButtonElement().

This question extendTag in Dart custom element shows how to create a custom element without Polymer.
See also this discussion https://groups.google.com/a/dartlang.org/forum/#!topic/misc/-z_8sVp_uPY