【发布时间】:2020-06-06 21:31:30
【问题描述】:
我有一个包含页面视图滑块和页面控制器的页面,我收到此错误:
[错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:
查找已停用小部件的祖先是不安全的。 E/颤动(
7013):此时widget的元素树的状态为no
更稳定。 E/flutter (7013):安全地引用一个小部件的
在其 dispose() 方法中,保存对祖先的引用
在小部件中调用dependOnInheritedWidgetOfExactType()
didChangeDependencies() 方法。
我正在尝试解决它,但我不能,我不知道这个错误的原因。 这是我使用的代码:
var pageController = PageController(initialPage: 0);
var pageViewModelData = List<PageViewData>();
Timer sliderTimer;
var currentShowIndex = 0;
@override
void initState() {
pageViewModelData.add(PageViewData(
titleText: 'Cape Town',
subText: 'Extraordinary five-star\noutdoor activites',
assetsImage: 'assets/images/explore_2.jpg',
));
pageViewModelData.add(PageViewData(
titleText: 'Find best deals',
subText: 'Extraordinary five-star\noutdoor activites',
assetsImage: 'assets/images/explore_1.jpg',
));
pageViewModelData.add(PageViewData(
titleText: 'Find best deals',
subText: 'Extraordinary five-star\noutdoor activites',
assetsImage: 'assets/images/explore_3.jpg',
));
sliderTimer = Timer.periodic(Duration(seconds: 4), (timer) {
if (currentShowIndex == 0) {
pageController.animateTo(MediaQuery.of(context).size.width, duration: Duration(seconds: 1), curve: Curves.fastOutSlowIn);
} else if (currentShowIndex == 1) {
pageController.animateTo(MediaQuery.of(context).size.width * 2, duration: Duration(seconds: 1), curve: Curves.fastOutSlowIn);
} else if (currentShowIndex == 2) {
pageController.animateTo(0, duration: Duration(seconds: 1), curve: Curves.fastOutSlowIn);
}
});
super.initState();
}
@override
void dispose() {
sliderTimer?.cancel();
super.dispose();
}
我从这一行开始得到错误:
MediaQuery.of(context).size.width
谁能告诉我这个问题的原因!谢谢
【问题讨论】:
标签: animation flutter dart controller widget