纲要:
结果
过程
1. 结果
处理结果放在前,GetX版本问题,升级到最新版 4.6.6 即可
get: ^4.6.6
2. 过程
项目依赖 4.6.5 的 GetX 版本,发现返回页时候不会调用 GetxController 的 onClose() 既是 Controller 没有被回收
void main() {
runApp(GetMaterialApp(
initialRoute: AppRouter.root,
getPages: [
GetPage(name: AppRouter.root, page: () => A()),
GetPage(name: "/sec", page: () => const B()),
],
));
}
class A extends GetView<AVM> {
const A({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
Get.put(AVM());
return GestureDetector(onTap: (){Get.toNamed("/sec");}, child: Text("Hello"),);
}
}
class B extends GetView<BVM> {
const B({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
Get.put(BVM());
return GestureDetector(onTap: (){Get.back();},child: Text("Back"),);
}
}
class AVM extends GetxController{}
class BVM extends GetxController{
@override
void onClose() {
super.onClose();
print('onclose');
}
}
A 跳转 B
B 返回 A,B 的 onClose 不回调
导致了我项目中的界面因为没有回收而复用了上次的数据