флаттер: анимация перехода к названному маршруту - PullRequest
0 голосов
/ 27 июня 2019

Когда я использую Navigator.pushNamed(context, "/someRoute");, появляется минимальная анимация, которая скользит по новому маршруту из нижней части экрана (на Android может выглядеть иначе на iOS).

Как добавить пользовательскую анимацию к этому переходу?

Я нашел эту статью , в которой есть очень аккуратный пример кода для безымянных маршрутов. Они реализуют свой собственный класс, который наследуется от PageRouteBuilder и может использоваться следующим образом: Navigator.push(context, SlideRightRoute(page: Screen2())). Но PageRouteBuilder не является виджетом и не может быть зарегистрирован как маршрут в MaterialApp. Поэтому я не вижу, как применить это к именованным маршрутам.

1 Ответ

0 голосов
/ 27 июня 2019

Вам нужно использовать onGenerateRoute в вашем MaterialApp виджете.

onGenerateRoute: (settings) {
  if (settings.name == "/someRoute") {
    return PageRouteBuilder(
      pageBuilder: (context, anim1, anim2) => SomePage(),
      transitionsBuilder: (context, anim1, anim2, child) {
        return FadeTransition(opacity: anim1, child: child);
      },
    );
  }
  // unknown route
  return MaterialPageRoute(builder: (context) => UnknownPage());
},
...