關于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.pswp.cn/pingmian/82205.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82205.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82205.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

財管-1-財務分析、評價和預測

1.因素分析法&#xff1a; 報告期&#xff08;實際&#xff09;指標M1A1 * B1 * C1 基 期&#xff08;計劃&#xff09;指標M0A0 * B0 * C0……&#xff08;1&#xff09; 第一次替代 A1 * B0 * C0……&#xff08;2&#xff09; 第二次替代 A1 * B1 * C0……&#xff08;3…

golang逃逸分析

1.1 逃逸分析是什么 逃逸分析是指編譯器在執行靜態代碼分析后&#xff0c;對內存管理進行的優化和簡化。 在編譯原理中&#xff0c;分析指針動態范圍的方法被稱為逃逸分析。通俗來講&#xff0c;當一個對象的指針被多個方法或線程引用時&#xff0c;則稱這個指針發生了逃逸。…

Meetily:AI會議記錄,開源、免費、好用(本地AI實時轉錄、隱私保護一步到位!)

名人說:博觀而約取,厚積而薄發。——蘇軾《稼說送張琥》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 目錄 一、初識Meetily:什么是真正的智能會議助手?1. 核心優勢一覽2. 技術架構揭秘二、實戰體驗:從安裝到使用的完整流程1. 系統要求2. 快速安裝指南Wi…

.NET ORM開發手冊:基于SqlSugar的高效數據訪問全攻略

SqlSuger是一個國產&#xff0c;開源ORM框架&#xff0c;具有高性能&#xff0c;使用方便&#xff0c;功能全面的特點&#xff0c;支持.NET Framework和.NET Core&#xff0c;支持各種關系型數據庫&#xff0c;分布式數據庫&#xff0c;時序數據庫。 官網地址&#xff1a;SqlS…

【論文閱讀】KIMI-VL TECHNICAL REPORT

KIMI-VL TECHNICAL REPORT 原文摘要 核心模型&#xff1a;Kimi-VL 模型架構&#xff1a;基于 MoE 設計&#xff0c;僅激活語言解碼器的 2.8B 參數&#xff08;Kimi-VL-A3B&#xff09;&#xff0c;在保持高效計算的同時實現高性能。 MoE&#xff08;Mixture of Experts&#xf…

項目管理學習-CSPM4(2)

1 前言 最近在學習CSPM的課程&#xff0c;部分內容讓我受益匪淺。建議需要提升項目管理能力的同學可以通過以考促學的方式進行學習。下面整理了一部分內容和大家分享。CSPM全稱China Standards Project Management&#xff0c;中文名為項目管理專業人員能力評價等級證書&#…

【Web前端】ECMAScript 6基礎學習

ECMAScript 6 簡介 ECMAScript 和 JavaScript 的關系:前者是后者的規格&#xff0c;后者是前者的一種實現&#xff0c;常場合&#xff0c;這兩個詞是可以互換的。 ECMAScript 6&#xff08;以下簡稱 ES6&#xff09;是 JavaScript 語言的標準&#xff0c;在 2015 年 6 月發布…

基于Python的全卷積網絡(FCN)實現路徑損耗預測

以下是一份詳細的基于Python的全卷積網絡(FCN)實現路徑損耗預測的技術文檔。本方案包含理論基礎、數據生成、模型構建、訓練優化及可視化分析,代碼實現約6000字。 基于全卷積網絡的無線信道路徑損耗預測系統 目錄 問題背景與需求分析系統架構設計合成數據生成方法全卷積網絡…

AI數字人一體機和智慧屏方案:開啟智能交互新紀元

在當今這個信息化飛速發展的時代&#xff0c;AI技術正以前所未有的速度改變著我們的生活方式和工作模式。特別是在人機交互領域&#xff0c;AI數字人的出現不僅極大地豐富了用戶體驗&#xff0c;也為各行各業提供了前所未有的創新解決方案。本文將重點介紹由廣州深聲科技有限公…

練習實踐--deepseek的使用環境搭建回顧--火山方舟

快速回顧 有更多第三方可以提供免費的大模型體驗服務&#xff0c;比如硅基流動/火山方舟&#xff0c;通過選擇指定模型&#xff0c;生成模型id和自己的API-KEY這兩個信息&#xff0c;可以在第三方集成ai工具&#xff0c;如cherry studio上使用&#xff1b; 參考來源 來自阮一…

Adminer 連接mssql sqlserver

第一步 docker-compose.yml adminer部分&#xff1a; version: 3.8 services: adminer: image: adminer:latest container_name: adminer restart: unless-stopped volumes: - ./freetds/freetds.conf:/etc/freetds.conf:rw # 確保 :rw 可讀寫 co…

JWT令牌詳解及Java中的使用實戰

JWT令牌詳解及Java中的使用實戰 摘要 本文將深入解析**JWT&#xff08;JSON Web Token&#xff09;**的核心概念&#xff0c;通過圖文并茂的方式詳解其工作原理&#xff0c;并手把手教你在Java中實現JWT的生成、驗證與解析。無論你是認證授權新手還是想鞏固知識的老手&#x…

晶圓隱裂檢測提高半導體行業效率

半導體行業是現代制造業的核心基石&#xff0c;被譽為“工業的糧食”&#xff0c;而晶圓是半導體制造的核心基板&#xff0c;其質量直接決定芯片的性能、良率和可靠性。晶圓隱裂檢測是保障半導體良率和可靠性的關鍵環節。 晶圓檢測 通過合理搭配工業相機與光學系統&#xff0c…

Java 的 ReentrantLock

Java中的ReentrantLock是java.util.concurrent.locks包下提供的一個可重入互斥鎖&#xff0c;用于替代synchronized關鍵字實現更靈活的線程同步。以下是其核心特性和使用方法的詳細說明&#xff1a; 核心特性 可重入性 同一個線程可以重復獲取同一個鎖&#xff08;鎖的持有計數…

達夢數據庫-學習-23-獲取執行計劃的N種方法

目錄 一、環境信息 二、說點什么 三、測試數據生成 四、測試語句 五、獲取執行計劃方法 1、EXPLAIN &#xff08;1&#xff09;樣例 &#xff08;2&#xff09;優勢 &#xff08;3&#xff09;劣勢 2、ET &#xff08;1&#xff09;開啟參數 &#xff08;2&#xff…

20200201工作筆記常用命令要整理

工作筆記常用命令&#xff1a; 1.repo常用命令&#xff1a; repo sync -c -j10 2. 常用adb命令 錯誤: error: device unauthorized. This adbds $ADB_VENDOR_KEYS is not set; try adb kill-server if that seems wrong. Otherwise check for a confirmation dialog on your d…

PET,Prompt Tuning,P Tuning,Lora,Qlora 大模型微調的簡介

概覽 到2025年&#xff0c;雖然PET&#xff08;Pattern-Exploiting Training&#xff09;和Prompt Tuning在學術界仍有探討&#xff0c;但在工業和生產環境中它們已基本被LoRA/QLoRA等參數高效微調&#xff08;PEFT&#xff09;方法取代 。LoRA因其實現簡單、推理零開銷&#…

9種方法,一鍵美化Python圖表

Matplotlib、Seaborn默認參數不好看&#xff0c;美化需要大量代碼。 本次分享9種方法&#xff0c;一鍵美化圖表&#xff0c;看看那個是你的菜。 1 Matplotlib style sheets Matplotlib內置多類style sheets&#xff0c; 一行代碼使用&#xff0c; plt.style.use(Solarize_Li…

在STM32上配置圖像處理庫

在STM32上配置并使用簡單的圖像濾波庫(以實現均值濾波為例,不依賴復雜的大型圖像處理庫,方便理解和在資源有限的STM32上運行)為例,給出代碼示例,使用STM32CubeIDE開發環境和HAL庫,假設已經初始化好了相關GPIO和DMA(如果有圖像數據傳輸需求),并且圖像數據存儲在一個二…

Android四大組件學習總結

?1. Activity 啟動模式問題? ?面試官?&#xff1a; “我看你項目里用了 SingleTask 模式&#xff0c;能具體說說為什么用它嗎&#xff1f;如果從 Activity A&#xff08;SingleTask&#xff09;跳轉到 B&#xff08;Standard&#xff09;&#xff0c;再返回 A&#xff0c;…