使用TabBar时,有人在屏幕之间转换时会感到迟钝吗,还是我使用错了?基本上我是通过在其他小部件中构建页面来按如下方式使用它的:
us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
答案 0 :(得分:3)
TabBarView
不会在其中保存小部件的状态。每次重新出现在屏幕上时,都会对其进行重建。您可以通过在print()
中为其中一个小部件添加initState()
语句来检查此情况。要解决此问题,您可以使用AutomaticKeepAliveClientMixin
class SettingsPage extends StatefulWidget {
SettingsPage({Key key}) : super(key: key);
@override
_SettingsPageState createState() => _SettingsPageState();
}
class _SettingsPageState extends State<SettingsPage> with AutomaticKeepAliveClientMixin { //<-- AutomaticKeepAliveClientMixin
@override
bool get wantKeepAlive => true; //Set to true
@override
Widget build(BuildContext context) {
super.build(context); //You must add this
return Container(); //A screen here
}
}
有了这个小小的改动,小部件就不会在每次回到屏幕时都重新构建
答案 1 :(得分:0)
您还没有使用过TabsController,也许它可以帮助您提高标签的性能。
TabController controller;
和initState()
controller = new TabController(length: 5, vsync: this);
在这里https://api.flutter.dev/flutter/material/TabController-class.html
答案 2 :(得分:0)
在发布模式下尝试您的应用程序:
flutter build apk
获取apk并将其安装在您的设备中(我通过驱动器完成) 并检查效果是否更好。
在调试模式下正常会有较差的体验。 调试模式不只是使用电缆进行调试的过程...还是一种APK。
我希望这项工作对您有用。