概述

#

ExpansionTileController 已弃用。相同的功能可以通过使用 ExpansibleController 实现。

背景

#

ExpansionTileController 可以通过编程方式展开和折叠 ExpansionTile。一个新的 Expansible 组件已添加到组件库中,它包含了展开和折叠行为的逻辑,且不依赖于 Material 库。ExpansibleController 补充了 Expansible,并具有与 ExpansionTileController 相同的功能。此外,ExpansibleController 还支持在其展开状态改变时添加和通知监听器。

使用 ExpansionTileController 的应用在调试模式下运行时会显示以下错误:“请改用 ExpansibleController。” 具体来说,这意味着用户应将 ExpansionTileController 的用法替换为 ExpansibleController

迁移指南

#

要迁移,请将 ExpansionTilecontroller 参数从 ExpansionTileController 替换为 ExpansibleController。与 ExpansionTileController 不同,ExpansibleController 是一个 ChangeNotifier,因此请记住处理(dispose)新的 ExpansibleController

迁移前的代码

dart
class _MyWidgetState extends State<MyWidget> {
  final ExpansionTileController controller = ExpansionTileController();
  
  @override
  Widget build(BuildContext context) {
    return ExpansionTile(
      controller: controller,
    );
  }
}

迁移后的代码

dart
class _MyWidgetState extends State<MyWidget> {
  final ExpansibleController controller = ExpansibleController();
  
  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }
  
  @override
  Widget build(BuildContext context) {
    return ExpansionTile(
      controller: controller,
    );
  }
}

时间线

#

发布版本:3.31.0-0.1.pre
稳定版本:3.32

参考资料

#

API 文档

相关问题

相关 PR