Flutter BottomNavigationBar切换避免b

2020-01-02  本文已影响0人  孙大硕

应该是在widget树发生变化的时候,widget重新出现的时候发生了build,在绝大多数情况下我们不希望这种事情发生,下面提供一个非常简单的解决办法。

通常我们会使用BottomNavigationBar的onTap: (int index) 方法,然后调用setState去更新显示的widget,其实问题在于我们将widget给替换掉了,所以出现的时候重新build并不奇怪,所以就需要一个什么东西将这些widget保存下来,然后按需显示。

一个最简单的方法就是用IndexedStack,这个widget可以存储widget并且保存它们的状态:

return Scaffold(
      body: IndexedStack(
        index: _currentIndex,
        children: widget.bodys,
      ),
      //避免按钮被重新build
      bottomNavigationBar: BottomNavigationBar(
     //此处省略了一万行

index就是要显示的widget的index,children就是要显示的widget集合

大家可以试一下,完美搞定。

上一篇下一篇

猜你喜欢

热点阅读