我无法使_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();
}