在颤动中定义初始化状态的异步调用
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;
}
在下面的代码中,我一直在尝试使用从提供者那里获得的值来初始化方法 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;
}