首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是最便宜和最便宜的小部件

问什么是最便宜和最便宜的小部件
EN

Stack Overflow用户
提问于 2022-09-14 09:06:29
回答 5查看 111关注 0票数 -1

在我的例子中,我需要在一个条件下在列中设置一个小部件,只需参见:

代码语言:javascript
复制
isSomeBool ? MyWidget() : thatLeastExpensiveWidget()

我只可以简单地使用SizedBox或Container,但是它们是我们可以使用的最便宜的小部件,还是仅用于此目的的小部件?

我也想知道颤振能制造出的最昂贵的小部件是什么

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2022-11-20 09:10:25

使用Container()和SizedBox() --即使它们是空的,它们仍然是一个需要呈现和绘制的完全抖动的小部件,因此实际上,在某些情况下,您可以使用它来关闭分析器。

我找到了零包,它提供了一个小部件,它只定义了一个类,Flutter框架认为它是一个小部件,但是没有执行任何渲染或绘制。

它的实现实际上只是几行代码,可以这样使用:

代码语言:javascript
复制
    return Builder(
  builder: (_) {
    if (condition) {
      return const MyWidget();
    } else {
      return nil;
    }
  },
);

万一有人对这个话题感兴趣。

票数 0
EN

Stack Overflow用户

发布于 2022-09-14 09:20:08

我不知道哪一个是最便宜的,因为它会让您深入研究Flutter的源代码,谁能回答您,是谁做出/贡献了这个颤振框架。但是SizedBox & Container是最简单的小部件,所以据我所知,它可能是最简单的。StatelessWidget也比StatefulWidget便宜。顺便说一句,如果您想构建自己的小部件,请使用class StatelessWidget而不是像Widget _buidYourOwnWidget()这样的方法,因为每次重新构建应用程序屏幕时,都会重新加载方法。在这种情况下,class StatelessWidget比方法_buidYourOwnWidget()便宜。

关于什么是最昂贵的,有两种昂贵:关于时间或空间。关于时间,显然是Future,因为它可以延迟任何您想要的时间。关于空间,它是您的自定义小部件--因为一个小部件可能包含许多子部件。例如,Scaffold是一个完整的屏幕,因此它在空间方面是最昂贵的。

票数 2
EN

Stack Overflow用户

发布于 2022-09-14 09:38:02

您只能使用if语句呈现所需的部分,并避免呈现下面所示的其他部分。

代码语言:javascript
复制
child: Column(children: [
    ListTile(
      ...
    ),
    if (bool)
      Container(
        ...
      ),
  ])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73714248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档