Size: a a a

Flutter Developers — русскоговорящее сообщество

2020 May 29

DS

Don Sergioz in Flutter Developers — русскоговорящее сообщество
⌬ Richard Cooper
котятки, подскажите, умоляю:
у меня есть многостраничное приложение, всё там разделено на скрины и так далее, и используется navigator для перемещения между ними.

но есть общий для всех сайдбар, и хедер общий, и еще какие то верхние виджеты. вот вопрос: что мне нужно прописать в MaterialApp что бы указать, что на всех страницах есть неизменияемый виджет сайдбар, а сами страницы такто экий некий там дочерний виджет?
Если у страницы есть свой адрес (роут), например, "/settings", то проще создать каждой отдельный виджет, который будет полностью формировать все элементы на экране.
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
Don Sergioz
Если у страницы есть свой адрес (роут), например, "/settings", то проще создать каждой отдельный виджет, который будет полностью формировать все элементы на экране.
то есть получается, я не смогу избавиться от 100500 полностью идентично объявленных виджетов?
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
я просто переживаю тогда, что код не будет правильно описывать что должно показываться, это же абсолютно одинаковые инстансы с абсолютно одинаковыми параметрами
источник

DO

Dmitriy Orteney in Flutter Developers — русскоговорящее сообщество
⌬ Richard Cooper
т.е. у меня там для всех, например, общий скаффолд скажем, и он никогда не пропадет с экрана, как мне обозначить, что он не часть страницы?
Кладешь в тело скафолда новый навигатор, и он уже будет переключать виджеты внутри
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
Dmitriy Orteney
Кладешь в тело скафолда новый навигатор, и он уже будет переключать виджеты внутри
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
так, ща погуглю
источник

DS

Don Sergioz in Flutter Developers — русскоговорящее сообщество
⌬ Richard Cooper
то есть получается, я не смогу избавиться от 100500 полностью идентично объявленных виджетов?
Можно избавиться от всего, главное правильно организовать процесс )
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
Don Sergioz
Можно избавиться от всего, главное правильно организовать процесс )
вот я и хочу понять, как уговорить навигатор работать не с глобальным виджетом, а с тем который мне нужен
источник

DS

Don Sergioz in Flutter Developers — русскоговорящее сообщество
⌬ Richard Cooper
вот я и хочу понять, как уговорить навигатор работать не с глобальным виджетом, а с тем который мне нужен
Передавай в навигатор параметры. У меня ощущение, что что-то усложнено организационно.
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
Don Sergioz
Передавай в навигатор параметры. У меня ощущение, что что-то усложнено организационно.
MaterialApp
\
Scaffold
\
 CustomSideBar(child:SomeScreen)

колбэк на какой-нибудь конпке: Navigator.push('/another_screen')

вот когда меняешь роут на AnotherScreen (я условно тут пишу, что бы понимать архитектуру), вот этот инстанс CustomSideBar никуда пропадать не должен, а меняться только его ребенок
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
уж хз, сколько времени жизнь инстанса считается нормальной во флаттере, но когда у тебя 20+ разных окон с идентичным виджетом сделаны, меня передергивает
источник

DS

Don Sergioz in Flutter Developers — русскоговорящее сообщество
У меня каждая страница строится вот таким образом:
return WillPopScope(
 onWillPop: () async {
   ...
   return false;
 },
 child: Scaffold(
   appBar: ...,
   bottomNavigationBar: ...,
   body: ...
источник

DS

Don Sergioz in Flutter Developers — русскоговорящее сообщество
Каждая страница имеет свой роут. И в редких случаях ей передаются входные параметры
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
таааак, сейчас еще и про willpop погуглю, чет очень много всего
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
Don Sergioz
Каждая страница имеет свой роут. И в редких случаях ей передаются входные параметры
параметры через роут всмысле?
источник

DS

Don Sergioz in Flutter Developers — русскоговорящее сообщество
⌬ Richard Cooper
таааак, сейчас еще и про willpop погуглю, чет очень много всего
Это если тебе надо самому реагировать на Back
источник

⌬C

⌬ Richard Cooper in Flutter Developers — русскоговорящее сообщество
как все перемудрено
источник

DS

Don Sergioz in Flutter Developers — русскоговорящее сообщество
⌬ Richard Cooper
параметры через роут всмысле?
Варианты перехода на другую страницу:
Navigator.of(context).push(PersonCabinet());

Navigator.of(context).pushReplacement(SlideRightRoute(page: MainStart()));

Navigator.of(context).pushReplacement(
    SizeRoute(page: MoonCalendar(page: "daypage"))
);
источник

DS

Don Sergioz in Flutter Developers — русскоговорящее сообщество
SizeRoute - анимация перехода между страницами
источник

DS

Don Sergioz in Flutter Developers — русскоговорящее сообщество
⌬ Richard Cooper
как все перемудрено
у меня такое же мнение о твоей ситуации )
источник