Flutter: flutter_page_transition с несколькими именованными маршрутами не работает - PullRequest
0 голосов
/ 25 мая 2020

Мне нужно переключаться между моими экранами с именованными маршрутами. Но когда я использую более одного маршрута, он переходит с переходом по умолчанию, а не с переходом из библиотеки flutter_page_transitions.

Это не работает:

      initialRoute: '/first',
      routes: {
        '/first': (context) => First(),
        '/second': (context) => Second(),
        '/third': (context) => Third(),
      },
      onGenerateRoute: (settings) {
        switch (settings.name) {
          case '/first': {
              return PageTransition(
                  child: First(), type: PageTransitionType.fade);
          }
          break;

          case '/second': {
              return PageTransition(
                  child: Second(), type: PageTransitionType.fade);
          }
          break;

          case '/third': {
              return PageTransition(
                  child: Third(), type: PageTransitionType.fade);
          }
          break;

          default: {
            return null;
          }
        }
      },


Это работает

      onGenerateRoute: (settings) {
        switch (settings.name) {
          case '/first': {
              return PageTransition(
                  child: First(), type: PageTransitionType.fade);
          }
          break;

          default: {
            return null;
          }
        }
      },

Ответы [ 2 ]

1 голос
/ 25 мая 2020

У вас не должно быть одного и того же маршрута в обоих маршрутах: и onGenerateRoute. Они исключают друг друга. Поэтому выберите, какой блок кода вы хотите обработать свой маршрут.

OnGenerateRoute выбирает маршруты, которые не указаны в маршрутах:

1 голос
/ 25 мая 2020

Спасибо, ребята! Решение: закомментировал маршруты

      home: First();
      //initialRoute: '/first',
      /*routes: {
        '/first': (context) => First(),
        '/second': (context) => Second(),
        '/third': (context) => Third(),
      },*/
      onGenerateRoute: (settings) {
        switch (settings.name) {
          case '/first': {
              return PageTransition(
                  child: First(), type: PageTransitionType.fade);
          }
          break;

          case '/second': {
              return PageTransition(
                  child: Second(), type: PageTransitionType.fade);
          }
          break;

          case '/third': {
              return PageTransition(
                  child: Third(), type: PageTransitionType.fade);
          }
          break;

          default: {
            return null;
          }
        }
      },


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