Hi Odev,
The synchronous callbacks can only be done on the main Dart thread of an isolate. So when you call into C from Dart, and from that thread you do a callback into Dart.
If you use a threadpool in C, you have to use asynchronous callbacks.
Flutter draws the UI in the main Dart thread of the main isolate. So, if you use the ffi in the main isolate (if you don't start extra isolates and do ffi on those), you will get frameloss if you spend too much time. I'm not sure where the sweetspot is, but 10ms per frame is a good guess.
Kind regards,