1
  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";   
       } 
    }
Günter Zöchbauer
  • 623,577
  • 216
  • 2,003
  • 1,567
liu bin
  • 11
  • 1
  • Why a super class used a factory constructor ,then forced the subclass must use the factory constructor too ? and the instance cannot access the static method of the class ? Why ? – liu bin Feb 12 '15 at 05:44

1 Answers1

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

Community
  • 1
  • 1
Günter Zöchbauer
  • 623,577
  • 216
  • 2,003
  • 1,567