TabController 初始化之后 长度发生变化报错

来源:12-16 加载进度条与下拉刷新的实现【实战应用】

东方蓂荚

2019-10-22

老师,我在initstate中初始化了tabcontroller,刷新数据的时候 数据发生了变化,tabbar和tabbarview中的数据减少了 但是Tabcontroller的length好像改不了 报长度和内容不匹配的错误。重新new了一个Tabcontroller 好像因为是final类型的变不了,请问这块我应该怎么处理。

  this._tabController =
      new TabController(vsync: this, length: trucknos.length);

  this._tabController.addListener(() => _handleRefresh());
写回答

1回答

CrazyCodeBoy

2019-10-23

可参考:

class _TravelPageState extends State<TravelPage>
    with TickerProviderStateMixin {
  TabController _controller;
  List<TravelTab> tabs = [];
  TravelTabModel travelTabModel;

  @override
  void initState() {
    _controller = TabController(length: 0, vsync: this);
    TravelTabDao.fetch().then((TravelTabModel model) {
      _controller = TabController(
          length: model.tabs.length, vsync: this); //fix tab label 空白问题
      setState(() {
        tabs = model.tabs;
        travelTabModel = model;
      });
    }).catchError((e) {
      print(e);
    });
    super.initState();
  }


1
1
东方蓂荚
_controller = TabController( length: model.tabs.length, vsync: this); 老师,在initstate中指定了length 页面有一些操作触发数据刷新 后台取回来的model.tabs.length 变了就会报错 是不是只能我刷新整个页面了 因为想保留页面上的一些状态。
2019-10-26
共1条回复

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3270 问题

查看课程