方法 'dispose' & jumptopage 不能无条件调用,因为接收者可以是 'null'
The method 'dispose' & jumptopage can't be unconditionally invoked because the receiver can be 'null'
我尝试在 flutter 中使用 pageController 但我发现问题是无条件地为什么“处理”需要有价值我不知道这个请帮我弄清楚
这是我的代码
PageController? pageController;
int pageIndex = 0;
void initState() {
super.initState();
pageController = PageController();
}
@override
void dispose() {
pageController.dispose();
super.dispose();
}
onPageChanged(int pageIndex) {
setState(() {
this.pageIndex = pageIndex;
});
}
onTap(int pageIndex) {
pageController.jumpToPage(pageIndex);
}
pageController.dispose();
此时,由于 pageController
被声明为 PageController? pageController;
,编译器不能排除它可能为 null。您不能在 null 上调用方法,因为编译器无法排除它,所以不会让您这样做。
你可以这样做:
final temp = pageController;
if(temp != null) {
temp.dispose();
}
或者如果您想使用 Dart 的强大功能并在后台为您完成:
pageController?.dispose();
我尝试在 flutter 中使用 pageController 但我发现问题是无条件地为什么“处理”需要有价值我不知道这个请帮我弄清楚
这是我的代码
PageController? pageController;
int pageIndex = 0;
void initState() {
super.initState();
pageController = PageController();
}
@override
void dispose() {
pageController.dispose();
super.dispose();
}
onPageChanged(int pageIndex) {
setState(() {
this.pageIndex = pageIndex;
});
}
onTap(int pageIndex) {
pageController.jumpToPage(pageIndex);
}
pageController.dispose();
此时,由于 pageController
被声明为 PageController? pageController;
,编译器不能排除它可能为 null。您不能在 null 上调用方法,因为编译器无法排除它,所以不会让您这样做。
你可以这样做:
final temp = pageController;
if(temp != null) {
temp.dispose();
}
或者如果您想使用 Dart 的强大功能并在后台为您完成:
pageController?.dispose();