从这个线程中,我发现有很多方法可以从树层次结构中隐藏小部件。比如使用:
可见性
:
Visibility(
visible: false,
child: Foo(),
);
后台
:
Offstage(
offstage: true,
child: Foo(),
);
不透明度
:
Opacity(
opacity: 0,
child: Foo(),
);
如果
条件:
if (visible) {
child
}
还有什么不可以。
哪一个是首选(我知道< code>Visibility是那个,通过why < code>Visibility),< code > if 条件和< code > Visibility 有什么区别,我如何衡量性能。< code >不透明度文档提到:
不透明度比按需从树中添加和删除子窗口小部件更有效。
这是什么意思,是针对if
条件的吗?如果是,那么在
四者中的位置在哪里?
我认为上述答案非常有用和明确。关于使用条件方法,我介绍了两种非常有用的方法:
条件 ? 子项 : SizeBox()
或 if (条件) 子项
,如果你使用 dart ver 至少 2.3.0
查看更多 https://github.com/flutter/flutter/issues/3783
不透明度
这个将不透明度(alpha)设置为您想要的任何内容。将其设置为 0.0
与将其设置为 0.1
相比稍微不那么明显,因此希望这很容易理解。小部件仍将保持其大小并占用相同的空间,并维护每个状态,包括动画。由于它留下了一个间隙,用户仍然可以触摸或单击它。(顺便说一句,如果您不希望人们触摸不可见的按钮,则可以使用OverlookPointer
小部件将其包装起来。
台下
这个隐藏了子部件。你可以把它想象成把小部件放在“屏幕之外”,这样用户就看不到它了。小部件仍然会遍历flutter管道中的所有内容,直到到达渲染阶段,在这里它根本不会布局或绘制任何内容。这意味着它将保持所有的状态和动画,但只是不会在“布局阶段”占用任何空间,也不会在“绘画阶段”绘制任何东西。因为它没有留下任何空隙,所以用户自然不能点击它。
能见度
为了您的方便,这一款结合了上述(和更多)功能。它具有参数,如maintainState
、maitainAnimation
、maintainSize
和maitainInteractivity
等。根据您如何设置这些属性,它从以下方面决定:
>
如果您想维护状态,它将使用Opacy
或OffStage
包装子级,这取决于您是否还想保持大小。此外,除非您想维护Interactive
,否则它还会为您包装一个IgnorePointer
,因为单击透明按钮有点奇怪。
如果您根本不想维护状态
,它会直接将子
替换为SizedBox
,因此它完全消失了。您可以使用替换
属性将空白SizedBox
更改为您想要的任何内容。
删除小部件
如果您不需要维护状态等,通常建议您从树中完全删除这个小部件。例如,您可以使用< code>if (condition)来决定是否在列表中包含一个小部件,或者使用< code>condition?child : SizedBox()直接用< code>SizedBox替换它。这避免了不必要的计算,对性能来说是最好的。
我有一个区域有很多对象,包括按钮等,可以点击。 动画不透明度工作很好,但我发现不可见的按钮仍然在画布的堆栈中,因此仍然可以点击。我想运行一个不透明动画,然后将项目设置为可见性隐藏,一旦它完成...这是可能的吗? 我的尝试产生了一个淡出的动画,但在淡出动画可以运行之前突然从页面上掉下来。 我基本上是在尽量避免画布上其他元素的干扰,但仍然保持在那里。 我得到了错误的行为,在项目消失之前,完全淡出,或者
问题内容: 如果是这样,它是否有效地弃用了该property? 问题答案: 这是来自各种答案的经过验证的信息的汇总。 这些CSS属性实际上都是唯一的。除了使元素不可见之外,它们还具有以下附加效果: 折叠 元素通常会占用的空间 响应 事件 (例如,单击,按键) 在参与 的TabOrder
问题内容: 是否可以编写和创建Firefox中的Firebug插件无法捕获的JavaScript Ajax请求? 我之所以这样询问,是因为我可以在Facebook上看到没有正在进行的Ajax请求,但是当我从另一个帐户发送消息时,顶部的消息框仍会添加“ 1条未读消息”指示符。甚至有可能实现? 谢谢。 问题答案: Firebug将“标准” AJAX请求记录到控制台面板;这些是使用ActiveX / X
半透明三角形叠加.html源码效果如下如图所示。 渲染管线之融合 GPU的渲染管线有各种功能单元,比如前面讲到的深度测试侧单元,通过执行gl.enable(gl.DEPTH_TEST)语句可以开启GPU渲染管线的深度测试单元, 同样更改WebGL API gl.enable()的参数也可以指定开启其它的功能模块,参数gl.BLEND就表示渲染管线的α融合单元,α融合的英文是alpha blendi
我正在使用内置的woocommerce类别小部件,目前它同时显示类别和子类别。 我通过以下代码排除了一个类别: 但是小部件仍然显示它的子类别。 链接:http://tithaty.com.br/?post_type=product 隐藏的类别是Coleções(我配置为父级),我想隐藏它的子类别,当前的和将来添加的子类别。 Colecao teste是一个子类别的例子。 有什么想法吗? 非常感谢。
问题内容: 您如何在Tkinter中显示和隐藏小部件?我想有一个输入框,但不要一直显示它。有人可以向我展示在tkinter中显示和隐藏条目小部件和其他小部件的功能吗?我希望能够在没有多个帧的情况下执行此操作。 问题答案: 这已经在stackoverflow上得到了回答。简短的答案是,您可以使用grid_remove,如果先前是通过网格添加的,则将导致该小部件被删除。记住小部件的位置,因此只需简单地