Ожидающие вызовы не блокируются. Это работает так: в то время как Dart является однопоточным, некоторый код Dart делегирует свою реализацию виртуальной машине Dart.
Такие вещи, как чтение файлов или HTTP-запросы, выполняются вне Dart (либо браузером, либо в C ++. ) в другом потоке.
Таким образом, хотя Dart является однопоточным, он все еще может выполнять несколько задач одновременно без блокировки пользовательского интерфейса.