【问题标题】:Can bottomNavigationBar's `onTap` event be used to redraw a widget?可以使用 bottomNavigationBar `onTap` 事件来绘制小部件吗?
【发布时间】:2019-09-11 21:00:10
【问题描述】:

我正在尝试学习使用BottomNavigationBar(替换屏幕底部的按钮)。在我当前的代码中,当用户点击返回按钮时:

onPressed: () {
  setState(() {
     anotherObject.previousQuestion();
    },
  );
},

被触发。 previousQuestion 方法更改列表中的索引,并使用新选择的列表项中的信息重绘屏幕。

当用户点击底部导航栏时,我可以做同样的事情吗?

我的问题出现是因为

  • 我看到的所有示例都集中在点击标签以加载不同的body 小部件和
  • 在 MaterialApp 中,BottomNavigationBar 在主应用小部件中声明,它是无状态的。我要问的是改变应用程序的状态。 (上面的 onPressed 方法当前在有状态小部件中调用。)

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    在 MaterialApp 中,BottomNavigationBar 在主应用小部件中声明,它是无状态的。我要问的是改变应用程序的状态。 (上面的 onPressed 方法当前在有状态的小部件中调用。)

    编辑澄清:您可以使用触发事件onTaponPressed 等从任何小部件调用任何函数。如果您的小部件没有该属性,您可以包装所述小部件例如,InkWellGestureDetector

    当用户点击底部导航栏时,我可以做同样的事情吗?

    是的,你可以。您几乎可以更改任何东西,只要您可以操纵 Widget 的状态。

    【讨论】:

    • 我不确定如何从声明了 BottomNavigationBar 的无状态小部件中调用 StatefulWidget 中的方法。或者,或者,如何在StatefulWidget,' i.e., something other than the Home` 小部件中创建bottomNavigationBar(应该始终可见)......希望这是有道理的:-)。
    • P.S. stackoverflow.com/questions/52761888/…stackoverflow.com/questions/57487236/… 在您回复后出现在“相关”列中。
    • 我编辑了我的答案。我不是特别喜欢这些答案,我认为这些答案对于您想要实现的目标来说太复杂了。解决此问题的更简单方法是仅使用无状态小部件并通过 providerscoped_model 管理状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2019-09-14
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多