📜  SwitchListTile 颤动 (1)

📅  最后修改于: 2023-12-03 15:20:25.667000             🧑  作者: Mango

颤动的 SwitchListTile

SwitchListTile 是一个带有开/关切换功能的 Flutter Widget,它支持在开关状态变化时发生颤动效果。这项功能在某些场景下可能很有用,比如帮助用户更好地注意到开关状态的变化。

SwitchListTile 继承自 StatefulWidget,因此它可以在开关状态变化时更新自身。具体来说,当 value 属性发生变化时,SwitchListTile 会重新构建自己,并且使用一个 TweenSequence 动画来实现颤动效果。

下面的例子展示了如何使用 SwitchListTile 并启用颤动功能:

SwitchListTile(
  value: _lights,
  onChanged: (bool value) {
    setState(() {
      _lights = value;
    });
  },
  title: Text('Lights'),
  secondary: const Icon(Icons.lightbulb_outline),
  activeColor: Colors.amber,
  activeTrackColor: Colors.yellow[500],
  switchAnimationController: AnimationController(
    vsync: this,
    duration: kThemeAnimationDuration
  )
)

switchAnimationController 属性是 SwitchListTile 所独有的。它控制颤动效果的动画过程。在这个例子中,我们创建了一个 AnimationController 并传递给了 SwitchListTile。这样,开关状态变化时 SwitchListTile 就会使用这个 AnimationController 来启动颤动效果。

当然,我们还需要在组件的状态类中实现 TickerProviderStateMixin

class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
  ...
}

如果你想要修改颤动效果的时间、方式、缓动等参数,可以通过修改 TweenSequence 对象来实现。TweenSequence 对象包含了一组 Tween,通过这些 Tween 可以指定颤动动画的起始值、结束值等参数。

总的来说,SwitchListTile 是一个很有用的 UI 组件,它帮助我们在用户开关状态变化时提供更加显眼的视觉反馈。而开启颤动功能则可以更好地吸引用户的注意力,提高用户体验。

**注:**为了使动画流畅,建议将 switchAnimationController 中的 duration 属性设置为 kThemeAnimationDuration(即 Material Design 规范中使用的标准动画时长,通常为 300ms)。