当我在showModalBottomSheet中执行setState()时,小部件不更新- FLUTTER

wa7juj8i  于 6个月前  发布在  Flutter
关注(0)|答案(2)|浏览(161)

我曾在一个Flutter程序,但我有一个问题,我不能解决,在showModalBottomSheet的小部件不更新时,我做一个setState();
我已经在BottomSheet小部件中看到过类似的问题,但我需要showModalBottomSheet
我想向你指出,我有一个DraggableScrollableSheet在我的showModalBottomSheet,一旦我关闭和重新打开的小部件正在更新,但我希望小部件立即更新
你能帮我解决吗?
Thanks in advance
我试着做同样的原则作为BottomSheet但它没有工作

ezykj2lf

ezykj2lf1#

使用StatefulBuilder将您要调用的小部件 Package 在底部工作表中。

l3zydbqr

l3zydbqr2#

在使用setState()时,您似乎遇到了在showModalBottomSheet中更新小部件的问题。要解决此问题,您可以尝试以下修复程序:
首先,确保您在正确的位置调用setState()。确保它被放置在您希望小部件更新的位置,而不是在build()方法之外。
其次,检查您要更新的小部件是否是setState() Package 的小部件的直接子部件。如果它嵌套得更深,则可能需要使用回调函数或状态管理方法(如ProviderBloc)将更新的数据向下传递到小部件树。
如果您要更新的小部件不在setState()的范围内,您可以使用GlobalKey强制重建该特定小部件。为小部件分配GlobalKey并使用key.currentState.setState(() {})触发重建。
最后,确保您在setState()中更新的数据正确传递到需要更新的小部件。仔细检查数据是否按预期进行修改。
我已经看到了很多使用它像下面这样,但我认为这是不正确的方式,如果你需要顶部重建ui直接:
不正确

onPressed: () {
    _isBottomSheetVisible = true;
    setState(() {

    });
 },

字符串
正确

onPressed: () {
  setState(() {
    _isBottomSheetVisible = true;
  });
},

相关问题