【问题标题】:Flutter Getx argument is never resetFlutter Getx 参数永远不会重置
【发布时间】:2022-12-01 05:24:32
【问题描述】:

我正在使用 flutter 并尝试使用 Getx 包在组件之间传递参数,我的问题是参数在使用后永远不会被置为 null。由于我导航到的组件的视图取决于我阅读的这些论点,因此在一个论点通过后我没有权利。解释:以这种方式导航

 Get.offAll(() => Home(), arguments: 1);   <==== arguments represents an initial tab Index in Home

然后在主页

 DefaultTabController(
      initialIndex: Get.arguments?? 0, <=== Get.arguments is never null again after line executed once
      length: tabs.length,

通常,即使我在不​​传递参数的情况下导航到任何其他小部件,参数也不再为空

我知道我可以直接使用构造函数来传递值,但我简化了案例。

那我错过了什么?我搜索了很多并且在我的脑海中逻辑上我不明白如何重新设置参数

谢谢你的帮助

【问题讨论】:

    标签: flutter dart flutter-getx


    【解决方案1】:

    由于Get.argumentsgetter 而不是setter,您不能像这样更改它的值:

    Get.arguments = null; // you can't do this
    

    但是,我看到您只是尝试使用 Get.arguments 一次,然后您希望它表现得像 null,对吧?

    因此,不要直接使用 Get.arguments,而是将其存储在另一个变量中,然后在 initialIndex 属性中使用该变量,如下所示。

    在类中添加这个 static count 变量:

    static int useCount = 0;
    

    我们将跟踪我们尝试使用Get.arguments 的次数。

      dynamic argumnetsMangedByUseCount() {
          if (useCount >= 1) {
            return null;
          }
          useCount++;
        
          return Get.arguments;
        }
    

    我们将使用此方法代替 Get.arguments,以便它返回基于 useCountnullGet.arguments

    1 数字表示它应该返回Get.arguments 的最大允许次数,否则它将返回null

    最后,在你的DefaultTabController 中:

    DefaultTabController(
      initialIndex: argumnetsMangedByUseCount() ?? 0,
      length: tabs.length,
    

    现在,在您对应用程序进行热重启后,您只会获得一次Get.arguments,之后您将获得null

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 1970-01-01
      • 2015-03-30
      • 2012-06-20
      • 2021-07-04
      • 1970-01-01
      • 2020-08-02
      • 2022-01-10
      • 1970-01-01
      相关资源
      最近更新 更多