Flutter入坑筆記

  • 根據(jù)Widget的源碼,只要newWidgetoldWidgetruntimeTypekey同時(shí)相等時(shí)就會(huì)用newWidget去更新Element對(duì)象的配置,否則就會(huì)創(chuàng)建新的Element

    @immutable
    abstract class Widget extends DiagnosticableTree {
      const Widget({ this.key });
      final Key key;
    
      @protected
      Element createElement();
    
      @override
      String toStringShort() {
        return key == null ? '$runtimeType' : '$runtimeType-$key';
      }
      static bool canUpdate(Widget oldWidget, Widget newWidget) {
        return oldWidget.runtimeType == newWidget.runtimeType
            && oldWidget.key == newWidget.key;
      }
    }
    
  • StatefulWidget也是繼承自widget類,并重寫了createElement()方法,不同的是返回的Element 對(duì)象并不相同;另外StatefulWidget類中添加了一個(gè)新的接口createState(),如源碼所示:

    abstract class StatefulWidget extends Widget {
      const StatefulWidget({ Key key }) : super(key: key);
    
      @override
      StatefulElement createElement() => new StatefulElement(this);
    
      @protected
      State createState();
    }
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。