【发布时间】:2021-10-02 22:29:12
【问题描述】:
实际上,我已经解决了这个问题。但这是奇怪的实现。对于这种情况,也许有更好的解决方案。
所以,我有根据底部导航索引显示的屏幕列表
List<Widget> screenList = [
HomeScreen(),
KategoriScreen(),
PesananScreen(),
AccountScreen()
];
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
body: Obx(() {
var user = Get.find<AccountController>().user.value; // <= weird Solution to trigger update
return screenList.elementAt(_mIndex);
}),
bottomNavigationBar: _bottomNavWidget(),
);
}
其中一个屏幕在小部件中有 Obx()。但是当数据改变时。画面未更新。我们需要更改屏幕索引,然后返回该屏幕以更新小部件。所以,我目前的解决方案是在 Scaffold 中添加 Obx() ,它使用无用的 var (var user) 处理底部导航栏逻辑。有更好的解决方案吗?
更新
很抱歉造成误解。我的问题是帐户控制器何时更新。屏幕不更新。需要更改其他屏幕并返回。另一种解决方案是在父 Widget 中使用 Obx()。但是没有使用用户值
【问题讨论】:
标签: flutter flutter-getx