Flutter筆記 - 事件分發

事件處理流程

Flutter 事件處理流程主要分兩步,爲了聚焦核心流程,我們以用戶觸摸事件爲例來說明:

  1. 命中測試:當手指按下時,觸發 PointerDownEvent 事件,按照深度優先遍歷當前渲染(render object)樹,對每一個渲染對象進行“命中測試”(hit test),如果命中測試通過,則該渲染對象會被添加到一個 HitTestResult 列表當中。
  2. 事件分發:命中測試完畢後,會遍歷 HitTestResult 列表,調用每一個渲染對象的事件處理方法(handleEvent)來處理 PointerDownEvent 事件,該過程稱爲“事件分發”(event dispatch)。隨後當手指移動時,便會分發 PointerMoveEvent 事件。
  3. 事件清理:當手指擡( PointerUpEvent )起或事件取消時(PointerCancelEvent),會先對相應的事件進行分發,分發完畢後會清空 HitTestResult 列表。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章