Длительные вычислительные операции в асинхронном методе, выполняемом в основном изоляте (UI thread), блокируют UI. Несмотря на то, что асинхронный метод использует Future или async/await, он все равно выполняется в том же потоке. Пока выполняется ресурсоемкая задача, UI не может обновляться, что приводит к "заморозке" приложения.
Для выполнения длительных операций без блокировки UI следует использовать:
dart