Flutter - вызов метода для некоторых детей от родителя. - PullRequest
0 голосов
/ 25 сентября 2018

Я открываю для себя Flutter и мне это очень нравится.Я создаю простое приложение, в котором у меня есть несколько экземпляров пользовательского виджета Statefull «Счетчик» на теле Scafold, и у меня есть кнопка «Сброс» в ящике.

Какой самый лучший способ вызвать «метод resetCounter "на всех экземплярах" Counter "при нажатии на кнопку" Сбросить "?

Я справился другим способом (вызывая метод обратного вызова родителя от дочернего элемента), но не могу найтидругой способ.Единственное решение, которое я нашел, это использование GlobalKeys, но оно не кажется подходящим.

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Существует другой подход для расширения ChangeNotifier и добавления дочерних в качестве слушателей.Как только родитель выполнит действие, вы можете вызвать notifyChange, чтобы вызвать обратные вызовы дочерних виджетов.

0 голосов
/ 26 сентября 2018

Действительно, для вашего случая функция обратного вызова может быть правильной.Но когда ваше приложение будет расти, иерархия виджетов будет становиться все более и более сложной.На данный момент у вас есть отношение Parent —> Child, и довольно легко передать функцию обратного вызова, но когда вы получите ситуацию Parent —> Widget A—> Widget B—> Child для передачи обратного вызова от Родителя к Ребенку, вам нужно будет передать ее через Widget A и * 1004.* а также.

Для меня ваша проблема звучит как идеальный кандидат для реактивных потоков .Вы можете создать Sink, который будет использоваться, когда пользователь нажмет на кнопку Reset, и ваш Counter будет наблюдать это событие и обрабатывать его методом resetCounter.Вы можете узнать больше о реактивном программировании (и других способах решения вашей проблемы) из этой презентации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...