You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义图标的EndDrawer点击无响应,求代码修改方案

修复EndDrawer点击图标无法打开的问题

你的代码存在两个关键问题,修改后即可正常打开EndDrawer:

  1. GlobalKey的绑定对象错误
    GlobalKey<ScaffoldState>应该绑定到Scaffold组件的key属性,而非endDrawer的key。openEndDrawer()是ScaffoldState的方法,必须通过Scaffold的GlobalKey获取状态后才能调用。

  2. GlobalKey的定义位置错误
    在build方法内定义GlobalKey会导致每次组件重建时生成新的Key,可能引发状态异常。需要将它提升为组件类的成员变量。

修正后的完整代码:

class YourWidgetState extends State<YourWidget> {
  // 将GlobalKey提升为类成员变量
  final GlobalKey<ScaffoldState> _key = GlobalKey(); 

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _key, // 把Key绑定到Scaffold上
      drawerEnableOpenDragGesture: true,
      appBar: AppBar(
        title: Text('Relatório'),
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.filter_list_outlined),
            onPressed: () => _key.currentState?.openEndDrawer(), 
          ),
        ],
      ),
      endDrawer: Drawer(
        child: Container(
          width: 100,
          height: 100,
        ),
      ),
    );
  }
}

内容的提问来源于stack exchange,提问作者José Henrique Queiroz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:46:08