设置状态方法未更新值



我无法使_onPageChanged工作。我正在PageView.builderonPageChanged: _onPageChanged,上使用它。每当我手动将_currentPage更改为例如1时,一切都很好。这里的问题是什么?

class Onboarding extends StatefulWidget {
const Onboarding({Key? key}) : super(key: key);
@override
State<Onboarding> createState() => _OnboardingState();
}
class _OnboardingState extends State<Onboarding> {
@override
Widget build(BuildContext context) {
int _currentPage = 0;
final PageController _pageController = PageController(
initialPage: 0
);
@override
void dispose() {
super.dispose();
_pageController.dispose();
}
@override
void initState() {
super.initState();
_currentPage++;
}
void _onPageChanged(int index) {
setState(() {
_currentPage = index;
});
}
return SafeArea(
...code

将此代码从构建方法中取出,放入State。

int _currentPage = 0;
final PageController _pageController = PageController(
initialPage: 0
);
@override
void dispose() {
super.dispose();
_pageController.dispose();
}
@override
void initState() {
super.initState();
_currentPage++;
}
void _onPageChanged(int index) {
setState(() {
_currentPage = index;
});
}

像这样:

class Onboarding extends StatefulWidget {
const Onboarding({Key? key}) : super(key: key);

@override
State<Onboarding> createState() => _OnboardingState();

}
class _OnboardingState extends State<Onboarding> {
int _currentPage = 0;

final PageController _pageController = PageController(
initialPage: 0
);

@override
void initState() {
super.initState();
_currentPage++;
}

void _onPageChanged(int index) {
setState(() {
_currentPage = index;
});
}

@override
Widget build(BuildContext context) {
return SafeArea(
...code;
}
@override
void dispose() {
super.dispose();
_pageController.dispose();
}

最新更新