При появлении сообщения Почему мы должны передавать контекст Навигатору во флаттере? - PullRequest
0 голосов
/ 15 февраля 2020

Поскольку flutter использует стек для управления экранами, доступ к которым можно получить с помощью класса Navigator, я понимаю его следующим образом:

Когда мы выполняем Navigator.pu sh (context,. ..): Здесь context используется так, что он знает, над каким другим виджетом должен появиться новый экран sh.

Я не понимаю, зачем ему нужен контекст для выдвинуть экран из поля зрения?

Разве он не может просто выдвинуть самый верхний экран стека и показать экран под ним?

What exactly is the role of context here и чем он отличается, когда pushing и popping

1 Ответ

1 голос
/ 15 февраля 2020

Причина одинакова для push и pop - это найти Navigator.

Глядя на .pop, вы видите, что это состояние c, вспомогательная функция, которая выполняет:

  return Navigator.of(context).pop<T>(result);

context используется в .of для поиска навигатора в дереве виджетов над виджетом, где вы вызываете pu sh или pop. Как и следовало ожидать, of (еще одна удобная функция stati c) находит фактический навигатор, используя:

 context.findAncestorStateOfType()

Итак, в итоге вы передаете контекст, так что context.findAncestor... может использоваться для найдите навигатор для вызова метода.

...