Android 每次从构建类中抖动停止底部导航栏

Android 每次从构建类中抖动停止底部导航栏,android,ios,flutter,navigation,navigationbar,Android,Ios,Flutter,Navigation,Navigationbar,我有一个底部导航栏,可以在同一屏幕中的类之间导航 我的主要构建小部件: Widget build(BuildContext context) { return SafeArea( top: false, child: Scaffold( body: PageStorage( child: Stack( children: <Widget>[currentPage, bottomBar()]

我有一个底部导航栏,可以在同一屏幕中的类之间导航

我的主要构建小部件:

  Widget build(BuildContext context) {
    return SafeArea(
      top: false,
      child: Scaffold(
        body: PageStorage(
          child: Stack(
            children: <Widget>[currentPage, bottomBar()],
          ),
          bucket: bucket,
        ),
      ),
    );
  }
小部件构建(构建上下文){
返回安全区(
上图:错,
孩子:脚手架(
正文:页面存储(
子:堆栈(
子项:[currentPage,bottomBar()],
),
桶:桶,
),
),
);
}
我的底线

Widget bottomBar() {
    return Column(
      children: <Widget>[
        const Expanded(
          child: SizedBox(),
        ),
        BottomBarView(
          tabIconsList: tabIconsList,
          addClick: () {},
          changeIndex: (int index) {
            setState(() {
              currentTab = index;
              currentPage = pages[index];
              print(pages[index]);
              print(currentTab);
            });
          },
        ),
      ],
    );
  }
Widget bottomBar(){
返回列(
儿童:[
常数扩展(
子项:SizedBox(),
),
底部条形图(
tabIconsList:tabIconsList,
addClick:(){},
changeIndex:(int索引){
设置状态(){
currentTab=索引;
currentPage=页面[索引];
打印(页数[索引]);
打印(当前选项卡);
});
},
),
],
);
}
底部的栏工作正常,但每次我按下一个按钮,它就会一次又一次地重建同一个类 即使我在使用bucket和Pagestorage
如何停止重建类?

好吧,你真的没有办法阻止重建。我将给你指出这个答案,因为我认为这是最好的答案

小部件可以出于任何原因随时重建。如果您不想对性能造成严重影响,请将逻辑排除在构建方法之外,因为构建方法应该只用于显示UI。BLoC模式非常擅长分离显示和逻辑


因此,基本上,保持构建方法的整洁。

但这不是不可能的,我的确切意思是创建一个像Instagram这样的应用程序,在浏览、帐户或活动时导航,而不刷新数据和滚动位置。你是说当你按下导航栏上的按钮时,它会重置,图标不会更改吗?不,它从一开始就显示小部件。就像您有一个futurebuilder来获取数据并只构建一次一样,因此每次您按下导航栏上的按钮时,它都会显示重新加载(CircularProgressIndicator),然后重新获取数据并从顶部显示小部件(丢失最新的滚动位置)你有什么解决办法吗?@anoop4real我用TabBar来代替,因为它保存了TabBar的最后一个滚动位置,比如这样的。。。。。那么API调用和其他东西呢……比如说,如果我有一个API调用,它会在每次切换选项卡时被调用吗?我相信每次都会调用抓取,除非您添加一些状态管理工具,如flift_bloc、provider、GetX