最近在学习开发Flutter应用项目,在建立tabbar和tabview后,进行网络请求后显示顶部tab标签,设置TabController,并使class类实现SingleTickerProviderStateMixin,代码以下html
class _TravelPageState extends State<TravelPage> with SingleTickerProviderStateMixin{ TabController _tabController; TravelTabModel travelTabModel; List<TravelTab> tabs = []; @override void initState() { _tabController = TabController(length: 0, vsync: this); TravelTabDao.fetch().then((TravelTabModel model){ print(model); _tabController = TabController(length: model.tabs.length, vsync: this); setState(() { tabs = model.tabs; travelTabModel = model; }); }).catchError((e){ print(e); }); super.initState(); }
运行代码后模拟器没有显示tab标签文字,且报以下错误网络
flutter: is a SingleTickerProviderStateMixin but multiple tickers were created. A SingleTickerProviderStateMixin can only be used as a TickerProvider once. If a State is used for multiple AnimationController objects, or if it is passed to other objects and those objects might use it more than one time in total, then instead of mixing in a SingleTickerProviderStateMixin, use a regular TickerProviderStateMixin.
如上报错,缘由是多个地方调用setState请求重绘,可是state使用的是SingleTickerProviderStateMixin ,将其改为TickerProviderStateMixin便可。 将上述代码进行修改以下:ide
class _TravelPageState extends State<TravelPage> with SingleTickerProviderStateMixin
修改成:学习
class _TravelPageState extends State<TravelPage> with TickerProviderStateMixin
修改完成后,从新运行项目便可。fetch
原文出处:https://www.cnblogs.com/wayne6688/p/12200640.htmlthis