How can I get it to work?
@override
void dispose() {
timer.cancel();
super.dispose();
}
And this is what I have:
class _ListCell extends State<ListCell> {
@override
void initState() {
super.initState();
Timer timer = Timer.periodic(Duration(seconds: 1), (_) => ListCell());
}
Constantly getting the error:
Error: The getter 'timer' isn't defined for the class '_ListCell'.
CodePudding user response:
You're getting the error because the timer variable is defined out of the scope of the dispose method. This is because you defined the variable in the initState method.
Solution:
Move the definition of the timer variable outside the initState method like this:
class _ListCell extends State<ListCell> {
Timer? timer;
@override
void initState() {
super.initState();
timer = Timer.periodic(Duration(seconds: 1), (_) => ListCell());
}
...
Since the timer variable is now nullable as it is of type Timer?, you need to use the null-check operator on it in the dispose method.
@override
void dispose() {
timer?.cancel();
super.dispose();
}
Checkout Dart's Lexical Scope
