【问题标题】:Flutter Spacer vs Expanded颤振间隔器与扩展
【发布时间】:2019-06-01 03:08:39
【问题描述】:

Flutter 中 ExpandedSpacer 有什么区别?为什么 Flutter 团队在我们已经有 Expanded 的情况下添加了 Spacer

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    SpacerExpanded 都做同样的工作,即它们填满像 RowColumn 这样的小部件中的剩余空间。在Spacer之前,我们不得不使用

    Expanded(child: Container())
    

    这不是很好。对于Spacer,我们只需要使用

    Spacer()
    

    因此,使用Spacer,我们阻止了我们编写更多代码,它也清楚地表明我们只是在使用它来填充剩余空间。它们都具有flex 的相同属性,默认为1。唯一的区别是我们没有 child 有意义的属性。其实Spacer

    Expanded(child: SizedBox.shrink());
    

    TL;DR

    Spacer() 
    

    等价于

    Expanded(child: Container())
    

    【讨论】:

      【解决方案2】:

      Expanded 使其 child 小部件占据空间。

      Spacer 自己占用空间。

      如果您查看implementation of Spacer,您会发现它是Expanded 的包装器,带有一个虚拟孩子。

      Spacer 真的有必要吗?可能不是。在另一个宇宙中,Expanded 可以有一个可选的 child 参数。

      【讨论】:

        猜你喜欢
        • 2021-06-02
        • 2023-01-03
        • 1970-01-01
        • 2021-11-20
        • 2020-04-16
        • 2020-12-11
        • 2021-01-15
        • 1970-01-01
        相关资源
        最近更新 更多