在颤动中定义初始化状态的异步调用

Defining async call in init state in flutter

在下面的代码中,我一直在尝试使用从提供者那里获得的值来初始化方法 checkStatus(),但是由于提供者生成的数据存在加载延迟,所以我无法在初始状态。我可以在这里使用其他方法吗?

@override
      void initState() {
        // TODO: implement initState
        super.initState();
        final interestDetail = Provider.of<InterestProvider>(context, listen: false);
        interestDetail.getData(context);
    

checkStatus(interestDetail.interest.subcategoryData,interestDetail.interest.customerSelectedSubcatIds);
      }
    
      List<int> checkStatus(a, c){
        for (var i = 0, len1 = a.length; i < len1; i++) {
          for (var j = 0, len2 = c.length; j < len2; j++) {
            if (a[i].id == c[j]) {
              _selectedIndexList.add(j);
              _selectedCatList.add(j + 1);
              check = true;
              break;
            }
          }
        }
        print(check);
        return _selectedIndexList;
      }

您可以像下面这样修改您的源代码:

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    Future.delayed(Duration.zero, () {
       final interestDetail = Provider.of<InterestProvider>(context, listen: false);
        interestDetail.getData(context);
    

checkStatus(interestDetail.interest.subcategoryData,interestDetail.interest.customerSelectedSubcatIds);
    });
  }
    List<int> checkStatus(a, c){
        for (var i = 0, len1 = a.length; i < len1; i++) {
          for (var j = 0, len2 = c.length; j < len2; j++) {
            if (a[i].id == c[j]) {
              _selectedIndexList.add(j);
              _selectedCatList.add(j + 1);
              check = true;
              break;
            }
          }
        }
        print(check);
        return _selectedIndexList;
      }