当前位置: 首页 > article >正文

关于flutter中Scaffold.of(context).openEndDrawer();不生效问题

原因:

在 Flutter 中,Scaffold.of(context) 会沿着当前的 context 向上查找最近的 Scaffold。如果当前的 widget 树层级中没有合适的 Scaffold(比如按钮所在的 context 是在某个子 widget 中),就找不到它。

解决办法:

1.你可以使用 Builder 来创建一个新的 context,这个新的 context 是属于 Scaffold 的子树,这样就能正确找到 Scaffold

class RightDrawerExample extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(endDrawer: Drawer(child: ListView(padding: EdgeInsets.zero,children: [DrawerHeader(decoration: BoxDecoration(color: Colors.blue,),child: Text('右侧抽屉'),),ListTile(title: Text('选项 1'),onTap: () {Navigator.pop(context); // 关闭抽屉},),ListTile(title: Text('选项 2'),onTap: () {Navigator.pop(context); // 关闭抽屉},),],),),body: Center(child: Builder(builder: (context) => ElevatedButton(onPressed: () {Scaffold.of(context).openEndDrawer();},child: Text('打开右侧抽屉'),),),),);}
}

2.也可以通过 GlobalKey 来访问 Scaffold

class RightDrawerExample extends StatefulWidget {_RightDrawerExampleState createState() => _RightDrawerExampleState();
}class _RightDrawerExampleState extends State<RightDrawerExample> {final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();Widget build(BuildContext context) {return Scaffold(key: _scaffoldKey, // 设置 keyendDrawer: Drawer(child: Center(child: Text('这是一个从右侧滑出的抽屉')),),body: Center(child: ElevatedButton(onPressed: () {_scaffoldKey.currentState?.openEndDrawer(); // 使用 key 打开抽屉},child: Text('打开右侧抽屉'),),),);}
}
http://www.lryc.cn/news/2385794.html

相关文章:

  • 【C++】深入理解C++中的函数与运算符重载
  • 【读代码】BAGEL:统一多模态理解与生成的模型
  • 隧道自动化监测解决方案
  • 如何通过EventChannel实现Flutter与原生平台的双向通信?
  • 游戏引擎学习第307天:排序组可视化
  • java接口自动化初识
  • 工作流引擎-01-Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎,支持现实世界的流程自动化需求
  • 时序数据库IoTDB的分片与负载均衡策略深入解析
  • NVM安装使用及问题解决
  • C++学习之STL学习:string类使用
  • 基于 STC89C52 的养殖场智能温控系统设计与实现
  • redis哨兵服务
  • 5月24日day35打卡
  • 嵌入式<style>设计模式
  • Kotlin 中该如何安全地处理可空类型?
  • 基于大模型预测的视神经脊髓炎技术方案
  • 使用防火墙禁止程序联网(这里禁止vscode)
  • Linux(7)——进程(概念篇)
  • 前端流行框架Vue3教程:24.动态组件
  • Unity3D仿星露谷物语开发48之显示树桩效果
  • [Datagear] 实现按月颗粒度选择日期的方案
  • 漏洞检测与渗透检验在功能及范围上究竟有何显著差异?
  • DB-GPT扩展自定义Agent配置说明
  • 基于SamOutV8的序列生成模型实现与分析
  • 家政维修平台实战09:推送数据到多维表格
  • 前端框架token相关bug,前后端本地联调
  • PyQt学习系列05-图形渲染与OpenGL集成
  • 卷积神经网络(CNN)可视化技术详解:从特征学到演化分析
  • 第十天的尝试
  • WHAT - 兆比特每秒 vs 兆字节每秒