我想使用 GetX 路由管理 (getPages) 但我不想在每次路由更改时加载一个全新的脚手架/页面 - 我只想能够在小部件/当前页面中调用函数自己在路线改变。
我尝试了许多不同的方法,我的最新方法:
GetPage(name: "/:section", page: ()=> Home(), maintainState: true, preventDuplicates: true, binding: HomeBinding())
]
和 home 类希望它不会重新加载页面而只是发送参数,我基本上可以连接到函数调用:
class Home extends StatelessWidget {
const Home({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
if(Get.parameters['section'] != null)
print(Get.parameters['section']);
return Scaffold(
body: Stack(
children: [
Padding(
padding: const EdgeInsets.only(top: 100.0),
child:
Obx(() => Stack(
children: Get.find<HomeController>().stackItems)
),
),
Menu()
]));
}
}
这不起作用,因为每次路由参数更改时它仍会重新加载 Home() 小部件。
我希望拥有这种无缝功能的原因之一是导航菜单需要在选择项目后以动画方式打开和关闭。通过使用 GetX 路由,动画不会播放,因为它正在重新加载小部件。我只想更新路线上的小部件,而不是完全加载新页面。