Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Can bottomNavigationBar';s`onTap`事件是否可用于重新绘制小部件?_Flutter_Dart - Fatal编程技术网

Flutter Can bottomNavigationBar';s`onTap`事件是否可用于重新绘制小部件?

Flutter Can bottomNavigationBar';s`onTap`事件是否可用于重新绘制小部件?,flutter,dart,Flutter,Dart,我正在尝试学习使用BottomNavigationBar(替换屏幕底部的按钮)。在我当前的代码中,当用户点击后退按钮时: onPressed: () { setState(() { anotherObject.previousQuestion(); }, ); }, 被触发。previousQuestion方法更改列表中的索引,并使用新选择的列表项中的信息重新绘制屏幕 当用户点击底部导航栏时,我能让同样的事情发生吗 我的问题是因为 我看到的所有示例都集中在点击选项卡

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

onPressed: () {
  setState(() {
     anotherObject.previousQuestion();
    },
  );
},
被触发。
previousQuestion
方法更改列表中的索引,并使用新选择的列表项中的信息重新绘制屏幕

当用户点击底部导航栏时,我能让同样的事情发生吗

我的问题是因为

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

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

当用户点击底部导航栏时,我能让同样的事情发生吗


是的,你可以。只要可以操纵小部件的状态,您几乎可以更改任何内容

我不确定如何从声明BottomNavigationBar的无状态小部件中调用
StatefulWidget
中的方法。或者,如何在
StatefulWidget'中创建
bottomNavigationBar
(应该始终可见),即除
Home`小部件之外的其他内容。。。希望这是有意义的:-)P.S。在你的回复后出现在“相关”栏。我编辑了我的答案。我并不特别喜欢这些答案,我认为这些答案太复杂了,无法实现你想要的目标。一种更简单的方法是只使用无状态小部件,并通过
provider
scoped\u model
管理状态。