美文网首页
flutter--luoji

flutter--luoji

作者: 你飞跃俊杰 | 来源:发表于2022-06-11 18:09 被阅读0次

    widgit与element是一对多关系
    https://www.freesion.com/article/4959804840/
    在mount方法中根据child Widget循环创建element

    image.png image.png

    在这里着重说一下RenderObjectWidget,看下表:

    Widget 说明 举例
    MultiChildRenderObjectWidget 该类型的Widget可以添加多个widget Row,Column,Stack
    SingleChildRenderObjectWIdget 该类型的widget只能添加一个widget Center,Padding,Container
    LeafRenderObjectWidget 该类型是树的叶子节点,故不能添加widget Text,Image,Semantics


    image.png
      void mount(Element parent, dynamic newSlot) {
        super.mount(parent, newSlot);
        _children = List<Element>(widget.children.length);
        Element previousChild;
        for (int i = 0; i < _children.length; i += 1) {
          final Element newChild = inflateWidget(widget.children[i], previousChild);
          _children[i] = newChild;
          previousChild = newChild;
        }
      }
    

    原生交互

    FlutterMethodCahnnel
     调用方法,一次通讯
    
    以下两种是持续通讯
    FlutterBaseMessageChannel 
    传递字符,半结构化的信息
    需要解码器
    
    FlutterChannelEvent 
    用于数据流(Stream)的通讯
    

    :super(key key)的作用,避免UI增量更新混乱(把参数写在state时出现,或者key值一样),

      static bool canUpdate(Widget oldWidget, Widget newWidget) {
        return oldWidget.runtimeType == newWidget.runtimeType
            && oldWidget.key == newWidget.key;
      }
    

    局部更新

              _globalKey.currentState.data =
                  'old:' + _globalKey.currentState.count.toString();
              _globalKey.currentState.count++;
              _globalKey.currentState.setState(() {});
    

    相关文章

      网友评论

          本文标题:flutter--luoji

          本文链接:https://www.haomeiwen.com/subject/rbgimrtx.html