概述

#

ExpansionTileController 已棄用。現在可以使用 ExpansibleController 實現相同的功能。

背景

#

ExpansionTileController 以程式設計方式展開和摺疊 ExpansionTile。小部件庫中添加了一個新的 Expansible 小部件,其中包含展開和摺疊行為的邏輯,而不依賴於 Material 庫。ExpansibleControllerExpansible 的補充,具有與 ExpansionTileController 相同的功能。此外,ExpansibleController 還支援新增偵聽器並在其展開狀態發生變化時通知它們。

在除錯模式下執行時,使用 ExpansionTileController 的應用程式會顯示以下錯誤:“請改用 ExpansibleController。” 具體來說,這意味著使用者應將 ExpansionTileController 的用法替換為 ExpansibleController

遷移指南

#

要進行遷移,請將 ExpansionTilecontroller 引數從 ExpansionTileController 替換為 ExpansibleController。與 ExpansionTileController 不同,ExpansibleController 是一個 ChangeNotifier,因此請記住處置新的 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