事件處理流程 Flutter 事件處理流程主要分兩步,為了聚焦核心流程,我們以用戶觸摸事件為例來說明: 命中測試:當手指按下時,觸發 PointerDownEvent 事件,按照深度優先遍歷當前渲染(render object)樹,對每一個渲染對象進行“命中測試”(hit test),如果命中測試通 ...
事件處理流程
Flutter 事件處理流程主要分兩步,為了聚焦核心流程,我們以用戶觸摸事件為例來說明:
- 命中測試:當手指按下時,觸發 PointerDownEvent 事件,按照深度優先遍歷當前渲染(render object)樹,對每一個渲染對象進行“命中測試”(hit test),如果命中測試通過,則該渲染對象會被添加到一個 HitTestResult 列表當中。
- 事件分發:命中測試完畢後,會遍歷 HitTestResult 列表,調用每一個渲染對象的事件處理方法(handleEvent)來處理 PointerDownEvent 事件,該過程稱為“事件分發”(event dispatch)。隨後當手指移動時,便會分發 PointerMoveEvent 事件。
- 事件清理:當手指抬( PointerUpEvent )起或事件取消時(PointerCancelEvent),會先對相應的事件進行分發,分發完畢後會清空 HitTestResult 列表。