Deprecated ExpansionTileController
Summary
#
                  ExpansionTileController is deprecated. The same functionality can be
                  achieved by using ExpansibleController instead.
                
Background
#
                  ExpansionTileController programmatically expands and collapses an ExpansionTile. A new 
                  Expansible widget has been added to the widgets library, which contains logic for expanding and collapsing behavior without being tied to the Material library. 
                  ExpansibleController complements Expansible and has the same functionality as 
                  ExpansionTileController. Additionally, ExpansibleController also supports adding and notifying listeners when its expansion state changes.
                
                  Apps that use ExpansionTileController display the following error when run
                  in debug mode: "Use ExpansibleController instead.". Specifically, this means that users should replace usage of 
                  ExpansionTileController with ExpansibleController.
                
Migration guide
#
                  To migrate, replace the controller parameter of an ExpansionTile from an ExpansionTileController
                   to an ExpansibleController. Unlike ExpansionTileController, ExpansibleController
                   is a ChangeNotifier, so remember to dispose the new ExpansibleController.
                
Code before migration:
class _MyWidgetState extends State<MyWidget> {
  final ExpansionTileController controller = ExpansionTileController();
  @override
  Widget build(BuildContext context) {
    return ExpansionTile(
      controller: controller,
    );
  }
}
                    
                    
                    
                  Code after migration:
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,
    );
  }
}
                    
                    
                    
                  Timeline
#
                  Landed in version: 3.31.0-0.1.pre
                  In stable release: 3.32
                
References
#API documentation:
Relevant issues:
- Codeshare between ExpansionTile and its Cupertino variant
 - Deprecate ExpansionTileController in favor of ExpansibleController
 
Relevant PRs:
Unless stated otherwise, the documentation on this site reflects Flutter 3.35.5. Page last updated on 2025-10-30. View source or report an issue.