Для использования ди, как вы говорите, есть ProxyProvider; ProxyProvider может быть как область приложения (объявлена поверх виджета приложения, чтобы к нему можно было получить доступ из любого места в приложении, например, AuthService) или виджет (экран), например, область видимости, например, ваша ViewModel
. В этом примере A - это ViewModel из MyWidget и B - это Сервис Ps. Вы должны предоставить другому Провайдеру класс B поверх этой иерархии, чтобы ProxyProvider мог получить к нему доступ, чтобы «предоставить» классу A
ProxyProvider<B, A>(
create: (_) => A(),
update: (_, b, a) => a..bClassVariable = b,
dispose: (_, a) => a.dispose(), //if you use streams
child: MyWidget(
),
)
По поводу вашего последнего ответа ответа нет), только вы должны решить, какой подход лучше для ваших потребностей, если вы знакомы с ViewVievModel, вы можете остаться с ним, или узнать что-то новое, как Blo C
Ps. Если вы используете ViewModel, ChangeNotifierProxyProvider будет работать нормально, а если вы используете blo c, то должны использоваться потоки