При использовании provider
одна модель не имеет доступа к другой модели.
Вместо этого следует использовать ProxyProvider
, чтобы объединить модель из других.
Ваши модели будут выглядеть так:
class Foo with ChangeNotifier {
int count = 0;
void increment() {
count++;
notifyListeners();
}
}
class Bar with ChangeNotifier {
int _count;
int get count => _count;
set count(int value) {
if (value != count) {
_count = value;
notifyListeners();
}
}
}
И тогда вы можете использовать ChangeNotifierProxyProvider
таким образом (при условии, что в вашем дереве виджетов есть `ChangeNotifierProvider выше):
ChangeNotifierProxyProvider<Foo, Bar>(
initialBuilder: (_) => Bar(),
builder: (_, foo, bar) => bar
..count = foo.count, // Don't pass `Foo` directly but `foo.count` instead
)