Yep, as far as I know this is the state of the art.
I forget who had the idea, but we've had discussion about writing an
"all-purpose" shim in JS. Handwaving, it would live on the JS side,
receive structured strings, and execute the fn calls they specify.
Nobody's got concrete plans to write this that I've heard of.
This would not be blindingly fast, but we aren't recommending tight
fine-grained intercalling between Dart and JS.