请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

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

  this._tabController.addListener(() => _handleRefresh());

正在回答 回答被采纳积分+3

1回答

CrazyCodeBoy 2019-10-23 21:34:49

可参考:

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 18:03:30
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号