📅  最后修改于: 2023-12-03 15:28:57.374000             🧑  作者: Mango
在Flutter中,颤振是一个重要的概念,指的是部件在滚动时产生的抖动。这是由于部件的尺寸和位置不断变化,导致GPU计算不足而产生的。为了解决这个问题,Flutter提供了一个特殊的部件,称为颤振条件父小部件(TrembleConditionallyFittedBox),可以有效地减少颤振的发生。
颤振条件父小部件的基本用法如下所示:
TrembleConditionallyFittedBox(
child: //此处为子部件
),
在这个部件中,只需添加一个子部件即可,该子部件将会自动进行调整以适应其父部件。
以下是颤振条件父小部件的关键属性:
child
(必需)此属性指定子部件,无论尺寸和形状如何。这个子部件的大小和形状都会被自适应地缩放和调整,以适应它的父部件。
TrembleConditionallyFittedBox(
child: Container(), // 此处为子部件
)
threshold
此属性指定了颤振的“阈值”,代表了当子部件与父部件的比例超过此阈值时将启动颤振缓解机制。默认值是0.1,即子部件大小的变化不超过10%时将不会缓解颤振。
TrembleConditionallyFittedBox(
threshold: 0.2, // 设置阈值为0.2
child: Container(), // 此处为子部件
)
duration
此属性指定了颤振缓解效果的持续时间。当颤振缓解机制启动时,子部件将会动画地变换大小和位置,以适应其父部件。duration
属性控制这个动画的持续时间,默认值为300毫秒。
TrembleConditionallyFittedBox(
duration: Duration(milliseconds: 500), // 设置动画持续时间为500毫秒
child: Container(), // 此处为子部件
)
curve
此属性指定了颤振缓解效果的动画曲线,可以使得缓解过程更加平滑。Flutter中内置了很多常用的动画曲线,我们可以根据自己的需要来选择。
TrembleConditionallyFittedBox(
curve: Curves.easeInOut, // 设置动画曲线为easeInOut
child: Container(), // 此处为子部件
)
TrembleConditionallyFittedBox(
threshold: 0.2,
duration: Duration(milliseconds: 500),
curve: Curves.easeInOut,
child: Image.network(
'https://picsum.photos/id/237/200/300',
fit: BoxFit.cover,
),
)
如上所示,我们可以将颤振条件父小部件与其他部件结合起来使用,以实现更加丰富多彩的界面。