我实际上在许多 Flutter 动画中都遇到过 lerp 函数。我研究了线性插值。但我想知道它在颤振中是如何使用的以及它的用例是什么。谁能解释一下?
iDe*_*ode 10
它在两个值之间进行线性插值,例如:
var color = Color.lerp(Colors.white, Colors.black, 0.5);
var value = lerpDouble(10, 20, 0.5); // 15
Run Code Online (Sandbox Code Playgroud)
在color这里将有白色和黑色之间的中间值。
您还可以使用它在选项卡视图上拖动期间为颜色设置动画。

var unselectedColor = Theme.of(context).unselectedWidgetColor;
var selectedColor = Theme.of(context).primaryColor;
Color color;
bool isSelected = itemIndex == tabController.index;
int currentIndex = tabController.index;
double offset = tabController.offset;
bool dragToRight = offset > 0;
if (dragToRight) {
if (itemIndex >= currentIndex && itemIndex <= currentIndex + 1) {
color = isSelected
? Color.lerp(selectedColor, unselectedColor, offset)
: Color.lerp(unselectedColor, selectedColor, offset);
}
} else {
if (itemIndex >= currentIndex - 1 && itemIndex <= currentIndex) {
color = isSelected
? Color.lerp(selectedColor, unselectedColor, -offset)
: Color.lerp(unselectedColor, selectedColor, -offset);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2514 次 |
| 最近记录: |