Я до сих пір обгортання мою голову навколо методів державно-управління в тріпотіння , і я трохи заплутався про те, коли і чому використовувати Provider.of<X>VS. Consumer<X>. Я розумію (я думаю) з документації, що, вибираючи між цими двома, ви б користувалися Provider.of, коли ми хочемо отримати доступ до даних, але інтерфейс користувача вам не потрібно змінювати. Отже, наступне (взято з документів) отримує доступ до даних та оновлює інтерфейс користувача щодо нових подій:
return HumongousWidget(
// ...
child: AnotherMonstrousWidget(// <- This widget will rebuild on new data events
// ...
child: Consumer<CartModel>(
builder: (context, cart, child) {
return Text('Total price: ${cart.totalPrice}');
},
),
),
);
Беручи під увагу, де ми потрібні тільки дані про не хочете відновити з UI, ми будемо використовувати Provider.of<X>з listenнабором параметрів до false, як показано нижче:
Provider.of<CartModel>(context, listen: false).add(item); \\Widget won't rebuild
Однак listenце не потрібно, тому буде запущено і наступне:
Provider.of<CartModel>(context).add(item); \\listener optional
Отже, це підводить мене до кількох питань:
- Це правильний спосіб розрізнити
Provider.of<X>іConsumer<X>. Колишній не оновлює інтерфейс користувача, останній робить? - Якщо
listenне встановленоfalse, віджет буде відремонтовано за замовчуванням чи не буде перебудовано? Що робити, якщоlistenвстановленоtrue? - Чому взагалі
Provider.ofє можливість відновити інтерфейс, коли у нас єConsumer?