#flutter #flutter-navigation #flutter-http
Вопрос:
У меня проблема с таймером. Я использую его для перезагрузки данных каждые 500 миллисекунд. Но когда я перехожу на следующую страницу, флаттер выдает мне эту ошибку: Необработанное исключение: Поиск предка деактивированного виджета небезопасен.
Я инициализирую таймер в методе initState, а также удаляю его. Вы можете увидеть мой код ниже. Я перехожу на следующую страницу из WebVersion и MobileVersion.
У кого-нибудь была такая же проблема?
class SelectState extends StatefulWidget{ @override _SelectStateState createState() =gt; _SelectStateState(); } class _SelectStateState extends Statelt;SelectStategt; { late MyData myData; late Futurelt;voidgt; initMyData; Timer? timer; @override void initState() { super.initState(); //TODO Timeout initMyData = initData().timeout(Duration(seconds: 5)); //if(mounted){ timer = Timer.periodic(Duration(milliseconds: 500), (timer) { if(mounted){ refreshMyData(); } }); //} } @override void dispose(){ super.dispose(); timer?.cancel(); } @override Widget build(BuildContext context) { return FutureBuilderlt;voidgt;( future: initMyData, builder: (context,snapshot){ if(snapshot.connectionState == ConnectionState.done){ if(MyData.data != ''){ final provider = Provider.oflt;LocaleProvidergt;(context); final locale = provider.locale; Listlt;StateDescriptiongt; entries = getArray(myData.data, locale, myData.text); return kIsWeb? WebVersion(entries: entries) :MobileVersion(entries: entries); } else{ return buildFailedConnectionContainer(context); } }else if(snapshot.hasError){ return buildTimedOutContainer(context); } else{ return LoadingWidget(); } }); } Futurelt;voidgt; initData() async{ await getData(context,true).then((value){ setState(() { myData = value; }); }); } void refreshMyData(){ if(mounted){ getData(context,false).then((value){ if(mounted){ setState(() { myData = value; }); } }); } } }