【发布时间】:2021-11-02 20:12:28
【问题描述】:
我有一个在 Android 上运行的极简主义示例应用程序,仅使用 GetX 作为状态管理库。有两个屏幕 LandingPage 和 MainScreen。从 MainScreen 返回到 LandingPage 屏幕时,控制器未按预期自动处理。 我只使用 Flutter 的 Navigation 而不使用 GetMaterialApp 包装。
我的期望是当控制器被实例化时,控制器暴露的值应该被重置为其初始值。 但是,小部件继续显示来自控制器的最后一个值。
我现在使用的是最新版本的 Flutter 和 GetX:分别是 2.2.3 和 4.3.8
感谢您的帮助。
代码:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.purple,
),
home: LandingScreen(),
);
}
}
class LandingScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.blue[800],
child: Center(
child: ElevatedButton(
onPressed: () => {
Get.to(MainScreen())
},
child: const Text('Navigate to Second Screen'),
),
),
);
}
}
class MainScreen extends StatelessWidget {
final MyController controller = Get.put(MyController());
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Container(
color: Colors.blueAccent,
child: Center(
child: Column(
children: [
Obx(() => Text('Clicked ${controller.count}')),
FloatingActionButton(
onPressed: controller.increment,
child: Text('+'),
),
ElevatedButton(
onPressed: ()=>{Navigator.of(context).pop()},
child: Text('Go Back'),
)
],
),
),
),
),
);
}
}
class MyController extends GetxController {
var count = 0.obs;
void increment() => count++;
}
【问题讨论】:
-
是的,除非您使用 GetX 导航,否则控制器不会释放。
-
好的。我将尝试使用 GetX 导航和更新。文档中的任何地方都提到过它吗?
-
我尝试了 GetX Navigation 以及使用 GetMaterialApp 进行包装,结果却没有运气:/。有什么建议吗?
-
我遇到了类似的问题,但在使用 getx 导航后处理工作正常。可以分享代码吗?
-
好的,所以我知道我必须通过一个回调来返回那个小部件而不是小部件本身。它现在可以与 GetMaterialApp 一起正常工作。
标签: flutter flutter-getx