最近在學習開發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