didPop () не принимает никаких аргументов в трепетании? - PullRequest
0 голосов
/ 05 марта 2020

Я хочу setState() виджета после навигации из определенного виджета,

, для этого я использую наблюдатель маршрута, как упомянуто в этой официальной ссылке

для вышеуказанного требования мне нужно знать виджет, с которого я перешел, и если он соответствует требуемому виджету, тогда я setState() в этом виджете.

в документах didPop() принимает аргументы Route route, Route previous route

но в виджете при передаче аргумента типа

class _MainPageState extends State<MainPage> with RouteAware {
   @override
   void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
      print("oh oooo yes");
   }
 }

флаттер выдает ошибку

'_MainPageState.didPop' ('void Function(Route<dynamic>, Route<dynamic>)') isn't a valid override of 
 'RouteAware.didPop' ('void Function()').dart(invalid_override)

в чем здесь проблема?

1 Ответ

1 голос
/ 05 марта 2020

Вы путаете RouteAware и RouteObserver.

RouteAware s didPop не получает никаких параметров. Это RouteObserver didPop, которые делают.

Дело в том, что в виджетах смешано RouteAware, а не RouteObserver. Таким образом, виджеты не получают текущие / предыдущие маршруты.

Подумайте о создании подклассов NavigatorObserver / RouteObserver и запекайте что-нибудь самостоятельно, если вам нужно что-то продвинутое.

...