Репозиторий помещают в слой данных между источником и бизнес-логикой. Он вызывает REST API или базу данных, преобразует JSON в типизированные сущности и отдаёт их приложению. Виджеты не зависят от сетевого клиента и формата ответа, а изменение стороннего API исправляют только в репозитории.
В примере
WeatherRepository задаёт получение погоды по городу, а реализация запрашивает OpenWeatherMap и разбирает ответ. В тестах сетевой код заменяют тестовым репозиторием. Абстрактный класс для этого необязателен: в Dart у каждого класса есть неявный интерфейс. Разбор Repository Pattern для Flutter сравнивает абстрактные и конкретные классы и показывает полный код приложения.
