Flutter TabBarView keeps calling builders
我的tabBar有一个StatelessWidget小部件,其中包含2个statefulWidgets。事实是,当单击管理器以查看我的所有选项卡时(默认情况下在我的第一个选项卡上登陆),tab1小部件生成器一直被调用。
我已经尝试了这两种方法,但是它们没有用:
扑朔迷离的多标签页/页面视图
将Flutter切换到选项卡将重新加载小部件并运行FutureBuilder
这真的很烦人,因为在某些小部件中,我需要发出一些http请求,并且它们也一直被调用。
1 2 3 4 | body: TabBarView( children: <Widget>[ Tab1Page(), Tab2Page(), |
这是我的tab1页面,它是一个stateFulWidget
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Widget build(BuildContext context) { // TODO: implement build print("tab1: Builder"); return ScopedModelDescendant<MainModel>( builder: (BuildContext context, Widget child, MainModel model) { List<SolicitudDto> listadoSolicitudesAprobadas = model.obtenerSolicitudesPendientes(); return Scaffold( body: ListView( children: <Widget>[ _buildCards(context, listadoSolicitudesAprobadas) ], ), ); }, ); |
} ??
这是我的调试器的打印记录:
如果要在TabBarView中保留屏幕状态,可以在State类中使用名为
此后,您必须重写
我在这里写了一篇关于这个的帖子:https://medium.com/@diegoveloper/flutter-persistent-tab-bars-a26220d322bc
更新
您可以尝试通过这种方式来避免每次切换选项卡时都请求数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //global variable at your state class List<SolicitudDto> listadoSolicitudesAprobadas; Widget build(BuildContext context) { // TODO: implement build print("tab1: Builder"); return ScopedModelDescendant<MainModel>( builder: (BuildContext context, Widget child, MainModel model) { if (listadoSolicitudesAprobadas == null){ listadoSolicitudesAprobadas = model.obtenerSolicitudesPendientes(); } return Scaffold( body: ListView( children: <Widget>[ _buildCards(context, listadoSolicitudesAprobadas) ], ), ); }, ); |