小编VMX*_*VMX的帖子

Flutter:更新 BottomNavigationBar 中的 currentIndex 时,PageView 的性能滞后(但如果我不更新 currentIndex,则不会出现滞后)

我正在创建一个带有 Scaffold 的应用程序,其中包含:

  • 一个FutureBuilder在创建身体PageView数据加载时,作为其子。
  • BottomNavigationBar,与同步PageView一个更直观的导航。

功能方面,一切正常。我可以在页面之间向左和向右滑动,并且在 中currentIndex正确更新BottomNavigationBar,如果我点击BottomNavigationBar元素,PageView它将按预期动画到正确的页面。

然而......在页面之间切换时性能真的很差,即使在配置文件模式下也是如此。

大量调查之后,我确认滞后只存在,如果我更新currentIndexBottomNavigationBar

如果我不更新BottomNavigationBar,则在页面之间切换时,无论是在 上滑动PageView还是在点击BottomNavigationBar元素本身时,动画都会保持非常流畅。

我还可以确认,在使用setState和使用Provider. 我真的希望这只是setState方法效率低下......但没有运气:(

对于setState实施,这就是我正在做的事情:

PageView

onPageChanged: (page) {
  setState(() {
    _selectedIndex = page;
  });
}
Run Code Online (Sandbox Code Playgroud)

在底部栏导航上:

onTap: _onTappedBar,
currentIndex: _selectedIndex
Run Code Online (Sandbox Code Playgroud)

及以下:

void _onTappedBar(int value) {
  _pageController.animateToPage(value, duration: Duration(milliseconds: 500), curve: Curves.ease); …
Run Code Online (Sandbox Code Playgroud)

lag dart flutter

6
推荐指数
1
解决办法
1665
查看次数

标签 统计

dart ×1

flutter ×1

lag ×1