什么相当于 Flutter ExpandablePanel 的 onExpansionChanged

What is the equivalent of onExpansionChanged for Flutter ExpandablePanel

我想在我的 ExpandablePanel 展开时调用一个函数,使用 ExpansionTile 我使用 onExpansionChanged 执行此操作 但这里我不想使用 ExpansionTile,

没有人有解决办法吗?

谢谢。

您可以将 ExpansionPanel 放在 ExpansionPanelList 中,里面会有一个名为 的 属性 expansionCallback

您可以用 ExpansionPanelList 包装 ExpansionPanel,这样您就可以访问名为 expansionCallback 的回调函数。看看下面的片段:

ExpansionPanelList(
        animationDuration: const Duration(milliseconds:1000),
        children: [
          ExpansionPanel(), //..your expansionPanel here
        ],
        expansionCallback: (int item, bool status) {
            //status is what you're looking for
        },
      ),

使用 ExpandableControllerExpandableNotifier:

class MyWidget extends StatefulWidget {
  const MyWidget({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _MyWidget();
}

class _MyWidget extends State<MyWidget> {
  final ExpandableController expandableController = ExpandableController();

  void onExpandableControllerStateChanged() {
    if (expandableController.expanded) {
      // Do your stuff when panel got expanded here
    } else {
      // Do your stuff when panel got collapsed here
    }
  }

  @override
  void initState() {
    super.initState();
    expandableController.addListener(onExpandableControllerStateChanged);
  }

  @override
  void dispose() {
    expandableController.removeListener(onExpandableControllerStateChanged);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return ExpandableNotifier(
      controller: expandableController,
      child: ExpandablePanel(
        header: HeaderWidget(),
        collapsed: CollapsedWidget(),
        expanded: ExpandedWidget(),
      ),
    );
  }
}