Wiring by hand does not scale

Every object needs its parts handed to it

A WalkersViewModel needs a WalkerRepository. That repository needs a PawWalkApi. The API needs an OkHttpClient. None of these build themselves β€” something, somewhere, has to construct each one and pass it down to the next. That's dependency injection (DI): a class receives (is "injected with") the things it depends on, instead of constructing them itself.

You've been doing DI by hand since module 10 β€” passing a repository into a ViewModel's constructor is already DI. The problem isn't the idea, it's the bookkeeping. Add a screen, and you need a new ViewModel, which needs the same repository, which needs the same API and client. Multiply that by every screen in PawWalk and you're hand-writing (and hand-maintaining) a factory function for the whole object graph.