флаттер провайдер - PullRequest
       3

флаттер провайдер

1 голос
/ 23 января 2020

Я смотрю следующий код на веб-сайте флаттера:

void main() {
  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (context) => CartModel()),
        Provider(create: (context) => SomeOtherClass()),
      ],
      child: MyApp(),
    ),
  );
}

Мне интересно, в чем разница между Provider и ChangeNotifierProvider?

Спасибо!

1 Ответ

1 голос
/ 23 января 2020

Из документации о пакете провайдера (все пути вниз):

Провайдер: самая основная c форма провайдера. Он принимает значение и предоставляет его независимо от значения.

ListenableProvider: Специфицированный c поставщик для объекта Listenable. ListenableProvider будет прослушивать объект и запрашивать перестраиваемые виджеты при каждом вызове слушателя.

ChangeNotifierProvider: спецификация ListenableProvider для ChangeNotifier. Он будет автоматически вызывать ChangeNotifier.dispose при необходимости.

Итак, ChangeNotifierProvider - это определенный c тип Provider, который будет прослушивать объект и перестраивать его зависимые виджеты, когда этот объект имеет был обновлен. Кроме того, он будет автоматически вызывать метод dispose при необходимости.

Provider - это универсальный c поставщик, без каких-либо более сложных функций, очень похожий на оптимизированный Inherited Widget .

...