Есть ли способ получить доступ к экземпляру предоставленного .family
уведомителя об изменении (который уже был создан с передачей правильных параметров) без повторной передачи параметров?
В ПОСТАВЩИКЕ
Когда вы создаете поставщика ChangeNotifier (для которого требуются параметры), вы можете получить то же средство уведомления об изменениях, которое он предоставляет с Provider.of<ChangeNotif>(context)
;
class ChangeNotif extends ChangeNotifier {
final String id;
const ChangeNotif(this.id);
}
ChangeNotifierProvider(create: (_) => ChangeNotif("dash"));
Как только провайдер будет создан с его правильными параметрами, вы можете получить все, что он предоставляет, где угодно в дереве виджетов без синтаксиса типа Provider.of<ChangeNotif("dash")>(context)
, а скорее Provider.of<ChangeNotif>(context)
.
В РЕЧЬЕ
Поскольку вы должны передать параметры поставщику при получении его экземпляра, мне пришлось назначить поставщика переменной, чтобы передать ее своим дочерним элементам, которым требуется уведомитель об изменениях, предоставляемый поставщиком.
final changeNotifProvider = ChangeNotifierProvider.family<ChangeNotif, String>((ref, id) => ChangeNotif(id));
class A extends HookWidget {
build() {
final _changeNotifProvider = changeNotifProvider("dash");
final _changeNotif = useProvider(_changeNotifProvider);
return Column(
children: [
B(),
c(_changeNotifProvider),
]
);
}
}
Есть ли способ получить экземпляр _changeNotif
, не передавая его в качестве параметра дочернему виджету? Есть ли способ получить тот же экземпляр _changeNotif в другом виджете, который не является дочерним элементом A (например, использование Provider.of<ChangeNotif>(context)
в Provider без необходимости передавать новые параметры)?