In this case I would strongly recommend starting with
a design document, since there are lots of non-trivial questions here. For instance, what does the pasteboard interoperability for complex types look like exactly (see the issue linked from my original comment in the drag-and-drop issue)? How does drag source/drop target declaration for cross-boundary dragging work, and how does it interact with existing intra-Flutter drag and drop? How do the engine and the embedding coordinate on location updates for sources and targets such that the native embedding implementations can correctly advertise those boundaries to the OS? And for the latter, has it been sanity checked against multiple embeddings (Windows, macOS, web, Linux) to make sure it's not over-fitting to one OS's API design?
-Stuart