Flutter使用SingleTickerProviderStateMixin報錯解決
設置TabController
最近在學習開發(fā)Flutter應用項目,在創(chuàng)建tabbar和tabview后,進行網(wǎng)絡請求后顯示頂部tab標簽,設置TabController,并使class類實現(xiàn)SingleTickerProviderStateMixin,代碼如下
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.
分析解決
如上報錯,原因是多個地方調(diào)用setState請求重繪,但是state使用的是SingleTickerProviderStateMixin ,將其改成TickerProviderStateMixin即可。
將上述代碼進行修改如下:
class _TravelPageState extends State<TravelPage> with SingleTickerProviderStateMixin
修改為:
class _TravelPageState extends State<TravelPage> with TickerProviderStateMixin
修改完成后,重新運行項目即可。
以上就是Flutter使用SingleTickerProviderStateMixin報錯解決的詳細內(nèi)容,更多關于Flutter SingleTickerProviderStateMixin的資料請關注腳本之家其它相關文章!
相關文章
python gstreamer實現(xiàn)視頻快進/快退/循環(huán)播放功能
這篇文章主要介紹了python gstreamer 實現(xiàn)視頻快進/快退/循環(huán)播放功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
android 檢查網(wǎng)絡連接狀態(tài)實現(xiàn)步驟
android 如何檢查網(wǎng)絡連接狀態(tài),是android開發(fā)中一個常見的問題,本文將介紹如何實現(xiàn),需要的朋友可以參考下2012-12-12

