[WIP]: feat: support creating multiple widget adapter from one DOM elements. #687
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In earlier versions of WebF, an HTMLElement could only have one adapter in the Flutter widget system at a time. When a new widget adapter was created for an HTMLElement, the previously created adapter's RenderObjects would be removed and disposed of.
For certain use cases, such as ContextMenu Flutter widgets, multiple widgets were required to function properly, which conflicted with the initial design of our adapter system.
In this PR, we introduce a new adapter system that creates separate RenderObjects for each widget while sharing the same RenderStyle and DOM element instance.
This means that if we apply styles or add new DOM nodes to the HTMLElement associated with multiple adapters, all the RenderObjects created by these adapters will be updated, resulting in consistent rendering. Additionally, when one of these adapters handles a new event, the event callbacks on the DOM element will be triggered accordingly.