我正在使用带有页面绑定的 getx 导航 - 例如:
GetPage(
name: Routes.pageone,
page: () => PageOne(),
binding: PageOneBinding(),
),
GetPage(
name: Routes.pagetwo,
page: () => PageTwo(),
binding: PageTwoBinding(),
),
GetPage(
name: Routes.pagethree,
page: () => PageThree(),
binding: PageThreeBinding(),
),
每个页面都有自己的控制器和绑定。
通常要导航到其他页面,我会
Get.toNamed(Routes.pageone)
像这样使用路由。
但是,当我使用标签栏/底部导航栏时,我想保留脚手架的应用栏和底部导航栏,只需使用 getx 切换内容。我能做的唯一方法是为所有页面设置脚手架,并在我单击每个选项卡时重新加载所有内容,这是低效的,并且每次我切换到页面时都会加载不必要的小部件(应用栏、标题、底部导航栏等) .)。
加载选项卡内容的常用方法,如
List<Widget> _widgetOptions = <Widget>[
PageOne(),
PageTwo(),
PageThree(),
];
没有使用 getx GetPage() 绑定,并且会加载所有页面的所有控制器。我找不到使用 GetPage() 和底部导航栏的正确参考。
例如,我在加载应用程序时的导航堆栈将是/main/pageone
并且每当我切换选项卡时都会将每个页面堆叠到我的堆栈中。(/main/pageone
单击 tab3-> /main/pageone/pagethree
)当我按下每个选项卡时,将加载该选项卡的控制器并删除以前的控制器。
我不确定我应该在body
我的脚手架中放入什么,它将接收小部件,但使用 GetPage 和绑定让我感到困惑。
这是我的应用程序的页面文件代码
class MyPage extends GetView<MyPageController> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My Title'),
),
body:
/// this is the part where I'm lost on what to put
SafeArea(
child: IndexedStack(
index: controller.curTabIdx.value,
children: [
controller.mainContent.value,
],
)
),
bottomNavigationBar: BottomNavigationBar(
onTap: (value) => controller.onNavTap(value),
currentIndex: controller.curTabIdx.value,
items: [
BottomNavigationBarItem(label: 'Page 1'),
BottomNavigationBarItem(label: 'Page 2'),
BottomNavigationBarItem(label: 'Page 3'),
],
),
);
}
}
如果你也需要控制器代码,我也可以插入。