Flutter动态更TabController数量提示LateInitializationError: Fieldtabcontroller' has not beeninitialized.

发布于 1 年前 作者 phonegap100 1336 次浏览 来自 分享

需求:Flutter请求完成数据后动态改变TabController数量 但是Flutter动态更TabController数量提示LateInitializationError: Fieldtabcontroller' has not beeninitialized.

错误代码如下:
 late TabController tabcontroller;
 
void onInit() async{
    super.onInit();
   //顶部tabs请求
    await getColumData();
 }
  
getColumData() async{
    var response = await httpsClient.get("api/getColumns?sid=1&cid=2");  
    if(response!=null){
      var focus = ColumModel.fromJson(response.data);
      //赋值
      tabList.value = focus.columns!;     
      tabcontroller = TabController(vsync: this, length: tabList.length);
      //刷新数据列
      update();
    }
  }

解决方法:

仅在initState中创建一次TabController,假装TabController length只是最大长度,如果您认为自己的应用最大数量为100,请使用固定的100。 改造后的代码

 late TabController tabcontroller;
 
void onInit() async{
    super.onInit();
	tabcontroller = TabController(vsync: this, length: 100);
   //顶部tabs请求
    await getColumData();
 }
  
getColumData() async{
    var response = await httpsClient.get("api/getColumns?sid=1&cid=2");  
    if(response!=null){
      var focus = ColumModel.fromJson(response.data);
      //赋值
      tabList.value = focus.columns!;     
   
      //刷新数据列
      update();
    }
  }
回到顶部