DI — это когда пишешь инсталлер / конфиг, в который пишешь, какие интерфейсы на какие реализации подменять.
И помечаешь в коде все поля
@Inject, он тебе заинжектит инстансы.
А провайдер — там вручную ресолвишь данные из стора. Так что он не DI.
DI я, честно говоря, под Flutter не видел. Да и нужен ли.