Во Flutter, как и в любом другом фреймворке, периодически возникает задача сделать задержку в выполнении кода. Но если сделать это напрямую, интерфейс просто перестанет реагировать на касания 🤦♂️.
Давайте разберемся, почему так происходит и как делать задержки правильно 📚.
Почему нельзя блокировать основной поток:
В мобильных приложениях есть главный поток, который отвечает за отрисовку интерфейса и обработку жестов 📱. Если этот поток занят каким-то длительным синхронным действием, например циклом с задержкой, то интерфейс перестает обновляться до тех пор, пока операция не завершится 🕰.
На андроиде, если заблокировать главный поток больше чем на 5 секунд, система вообще предложит пользователю закрыть приложение 🚫. На iOS такого жесткого порога нет, но интерфейс все равно перестает реагировать, что мгновенно портит пользовательский опыт 📉.
Поэтому все, что может занять время, нужно выполнять асинхронно, чтобы основной поток оставался свободным для отрисовки и обработки ввода 💻.
Как правильно сделать задержку во Flutter:
Во Flutter есть несколько способов сделать асинхронную задержку 🕒. Самый простой и правильный - использовать
Future.delayed():
Future.delayed(Duration(seconds: 2), () {
// код, который выполнится через 2 секунды
});
Этот метод возвращает Future, который завершится через указанное время ⏰. Все это время основной поток продолжает работать, интерфейс остается отзывчивым, а через 2 секунды выполняется переданный код 📝.
Если нужно подождать внутри асинхронной функции, используется await:
void doSomething() async {
await Future.delayed(Duration(seconds: 2));
// код после задержки
}
Полную новость читайте здесь.
FlutterPulse — канал о мире Flutter!
#flutter #dart #FlutterPulse #FlutterPulseNews #hardworkerFlutter 💻📱🕒