Flutter部件Widget和BuildContext上下文環境的關係

問題

  • 關於路由跳轉頁面遇到一個跳轉失敗的問題,log日誌報「Navigator operation requested with a context that does not include a Navigator.」代碼以下:圖片描述

解決方案

  • 把Scaffold段代碼抽取出來:

圖片描述

探究BuildContext

  • 上下文對象是整個APP Widget樹結構中的Widget話柄,每一個Wideget對應的都有屬於本身的BuildContext。BuildContext還提供了一組方法,這些方法可以在StatelessWidget.build 函數中被當前的上下文環境調用。好比 Navigator.pushNamed(context, '/');
  • 當部件Widget在StatelessWidget.build函數被返回時,這個部件會成爲父部件。因此這意味着StatelessWidget.build方法中的context和函數內部部件Widegt的context不是同一個上下文。因此它們兩個不一樣上下文可以調用的方法是有區別的。這就是這個問題關鍵的所在。

回顧問題

圖片描述
圖片描述

結尾

若有錯誤的地方歡迎指出,交流進步。
參考文獻:https://docs.flutter.io/flutt...html

相關文章
相關標籤/搜索