Flutter使用SingleTickerProviderStateMixin报错

简介: Flutter使用SingleTickerProviderStateMixin报错

最近在学习开发Flutter应用项目,在创建tabbar和tabview后,进行网络请求后显示顶部tab标签,设置TabController,并使class类实现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.

如上报错,原因是多个地方调用setState请求重绘,但是state使用的是SingleTickerProviderStateMixin ,将其改成TickerProviderStateMixin即可。

将上述代码进行修改如下:

class _TravelPageState extends State<TravelPage> with SingleTickerProviderStateMixin

修改为:

class _TravelPageState extends State<TravelPage> with TickerProviderStateMixin

修改完成后,重新运行项目即可。

目录
相关文章
|
API Android开发
Flutter导入第三方包后报错The number of method references in a .dex file cannot exceed 64K
Flutter导入第三方包后报错The number of method references in a .dex file cannot exceed 64K
Flutter的setState的使用注意事项以及报错The method ‘setState‘ isn‘t defined for the type
Flutter的setState的使用注意事项以及报错The method ‘setState‘ isn‘t defined for the type
|
Linux 开发者 Windows
Flutter报错Building with plugins requires symlink support的解决方法
Flutter报错Building with plugins requires symlink support的解决方法
|
Dart 安全
Flutter开发Cannot run with sound null safety报错
Flutter开发Cannot run with sound null safety报错
|
开发工具 Android开发 Windows
Flutter AndroidStudio 开发环境报错cmdline-tools component is missing
Flutter AndroidStudio 开发环境报错cmdline-tools component is missing
首次运行Flutter失败报错(Finished with error: Gradle task assembleDebug failed with exit code 1)
首次运行Flutter失败报错(Finished with error: Gradle task assembleDebug failed with exit code 1)
345 0
首次运行Flutter失败报错(Finished with error: Gradle task assembleDebug failed with exit code 1)
|
IDE 开发工具 Android开发
Flutter打包apk报错:Your app isn't using AndroidX.
Flutter打包apk报错:Your app isn't using AndroidX.
297 0
Flutter打包apk报错:Your app isn't using AndroidX.
|
开发工具 iOS开发 Perl
关于flutter_module嵌入ios原生项目报错:dyld: Library not loaded: @rpath/App.framework/App解决方案
上个星期,突然有一位做flutter开发的小伙伴添加了我的微信,说他的项目中报dyld: Library not loaded: @rpath/App.framework/App这个错误,说是采用我之前的文章Flutter-module嵌入iOS原生老项目中中的方法可以解决,但是他们是团队开发,路径写死对多人开发不够友好,问我有没有其他解决方案。
关于flutter_module嵌入ios原生项目报错:dyld: Library not loaded: @rpath/App.framework/App解决方案
【错误记录】Flutter 使用 MediaQuery 适配全面屏报错 ( No MediaQuery widget ancestor found. )
【错误记录】Flutter 使用 MediaQuery 适配全面屏报错 ( No MediaQuery widget ancestor found. )
822 0
【错误记录】Flutter 使用 MediaQuery 适配全面屏报错 ( No MediaQuery widget ancestor found. )
【错误记录】发布 Flutter 插件包报错 ( ‘gmail.com‘ has insufficient permissions to upload new versions of package)
【错误记录】发布 Flutter 插件包报错 ( ‘gmail.com‘ has insufficient permissions to upload new versions of package)
265 0
【错误记录】发布 Flutter 插件包报错 ( ‘gmail.com‘ has insufficient permissions to upload new versions of package)