Нет
Невозможно убить функцию compute
.
Почему
Причина этого заключается в том, что взгляд на исходный код функции compute
, созданный isolate
уничтожается только после завершения завершителя result
:
final Completer<R> result = Completer<R>();
...
await result.future;
...
isolate.kill(); // Always awaits the result.
Результат завершается, только если имеется возвращается ошибка или функция, которую вы передаете compute
.
Более того, вы не имеете доступ к isolate
самостоятельно потому что он создан внутри функции compute
.
Решение
Если вы хотите иметь возможность уничтожить запускаемый изолят, не используйте compute
. Вместо этого вам придется создать Isolate
самостоятельно.