自定义图标的EndDrawer点击无响应,求代码修改方案
修复EndDrawer点击图标无法打开的问题
你的代码存在两个关键问题,修改后即可正常打开EndDrawer:
GlobalKey的绑定对象错误
GlobalKey<ScaffoldState>应该绑定到Scaffold组件的key属性,而非endDrawer的key。openEndDrawer()是ScaffoldState的方法,必须通过Scaffold的GlobalKey获取状态后才能调用。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
相关产品推荐
相关产品推荐

