есть методы, которые выполняются асинхронно
т.е. например у тебя есть метод
Future<void> doSomething() async {}
и есть еще один обычный метод
void doSmthElse() {}
если ты вызываешь их подряд
doSomething();
doSmthElse();
то, doSmthElse не будет дожидаться, пока doSomething отработает
doSomething вернет тебе Future, это объект, который содержит информацию о выполнении этого метода
ты можешь у объекта Future вызвать метод then, передать в него другую функцию, которая отработает когда doSomething доработает до конца
await нужен для того, чтобы не использовать then()
await doSomething();
doSmthElse();
но await ты можешь указывать только в async функциях