Если вы ищете способ отредактировать ваши текущие страницы, например, вкладки, а затем переключаться между представлениями без фактического запуска маршрута новой страницы.
Что я обычно делаю, это:
enum Section
{
GUEST,
HOME,
PAGE_1,
PAGE_2
}
Ваша основная функция сборки:
@override
Widget build(BuildContext context)
{
Widget body;
/// You can easily control the section for example inside the initState where you check
/// if the user logged in, or other related logic
switch (section)
{
/// This is for example a login page since the user not logged in
case Section.GUEST:
break;
/// Display the home section, simply by
case Section.HOME:
body = HomeSection();
break;
case Section.PAGE_1:
body = Page1Section();
break;
case Section.PAGE_2:
body = Page2Section();
break;
}
return Scaffold(
body: Container(
child: body,
),
/// Display the drawer for logged in users only
drawer: section != Section.GUEST ? Drawer(
// Your drawer
) : null,
);
}
Это даже сохранит состояние между этими разделами, и вы быстро перемещаетесь между ними.
Перегружая ящик, вы делаетеэто правильно.Вы просто делаете это с помощью навигатора в контексте.Просто убедитесь, что у вас есть правильный контекст. (а не распространяемый)
И, конечно, изменить раздел просто:
setState(() => section = Section.HOME);