Как представить страницу с другим переходом (push / modal) во Flutter с помощью Getx?

У меня есть страница, которая может отображаться двумя способами, модально и принудительно, в зависимости от того, где эта страница инициируется.

Я использую toNamed для представления этих страниц, но проблема в том, что я не могу передать флаг fullscreenDialog на сайте вызова. Я ожидал чего-то такого:

Get.toNamed('pageName', fullscreenDialog: false);

Итак, мне нужно иметь два маршрута и две страницы для такой работы? Что-то вроде этого:

GetPage(
  name: 'pageNameDialog',
  page: () => QuestionPage(),
  fullscreenDialog: true,
  binding: QuestionBinding(),
),

GetPage(
  name: 'pageNamePush',
  page: () => QuestionPage(),
  fullscreenDialog: false,
  binding: QuestionBinding(),
),

Я думаю, это должен быть лучший способ, но я новичок во Flutter и getx и не знаю, что мне искать. У кого-нибудь есть решение для этого? В противном случае мне, возможно, придется удвоить свой маршрут и страницу, что является довольно избыточным.


person sarunw    schedule 11.05.2021    source источник


Ответы (1)


Вы можете передать свой флаг в качестве аргумента, например:

Get.toNamed('pageName', arguments: true);

А на странице, куда вы собираетесь, вы можете нажать:

Get.arguments;

Это вернет истину на pageName.

Теперь тип параметра arguments является динамическим, поэтому вы можете передать любой, а также, если вы хотите несколько, вы также можете передать List или Map.

Надеюсь, это то, чего вы хотели достичь.

person Krish Bhanushali    schedule 11.05.2021
comment
Я пытаюсь изменить анимацию презентации, не передавая аргумент. Можно ли использовать этот аргумент для изменения анимации? - person sarunw; 17.05.2021