Flutter: Run function repeatedly using CRON

Jitesh Mohite
FlutterWorld
Published in
3 min readOct 31, 2020

There are times when you want to run some tasks periodically, and to do that we have two things in a flutter.

  1. Timer
  2. Cron

Timer: It’s running a task on given specific time intervals whether it is seconds, minutes, hours, etc…

import 'dart:async';

void main() {
const oneSec = const Duration(seconds: 1);

Timer.periodic(oneSec, (Timer timer) {
print("Repeat task every one second"); // This statement will be printed after every one second
});
}

Cron lib which will be running periodically, but there is a difference between Timer and Cron. Cron used for more complex time intervals.

Example: If a task needs to be run at a specific time of an hour or a day or month then this is very useful. It is also called a time-based job scheduler.

Let’s see the diagram for a better understanding. The below diagram has an asterisk(*) that represents a number that appears in a specific position.

Cron has a daemon thread that runs in the background all the time and this thread is responsible for scheduling background work.

import 'package:cron/cron.dart';main() {
var cron = new Cron();
cron.schedule(new Schedule.parse('*/3 * * * *'), () async {
print('every three minutes');
});
cron.schedule(new Schedule.parse('8-11 * * * *'), () async {
print('between every 8 and 11 minutes');
});
}

The above examples are taken from the repository which pretty well explains that the first ‘*’ represents minutes, similar for the hour and so on as shown in the diagram.

Another example of the hour would be Schedule.parse(* 1,2,3,4 * * *), This schedule will run every minute every day during the hours of 1 AM, 2 AM, 3 AM, and 4 AM.

“*” This represents all possible numbers for that position.

Examples:

Schedule.parse(* * * * *): This will run the job each minute till it gets to stop.

Schedule.parse(0 * * * *) : This Cron job will run at minute zero, every hour (i.e. an hourly Cron job):

15 * * * * : This is also an minutes Cron job but runs at minute 15 (i.e. 00:15, 01:15, 02:15 etc.):

30 2 * * * [command]This will run once a day, at 2:30 am.

0 0 2 * * [command]This will run once a month, on the second day of the month at midnight (i.e. November 5th, 12:00am, December 5th, 12:00am, etc.):

0 * * * 1 [command]This will run on Mondays, every hour (i.e. 24 times in one day, but only on Mondays):

0,10,20 * * * * [command]You can use multiple intervals separated by commas. This will run three times every hour, at minutes 0, 10, and 20:

*/5 * * * * [command]A division operator is also used. This will run 12 times per hour, i.e. every 5 minutes:

0 5-10 * * * [command]Dash can be used to specify a range. This will run once every hour between 5:00 am and 10:00 am:

Few Examples where CRON job can be used

  • You can used it for auto log out which will logout user after user after specific intervals.
  • Erase cache data after specific intervals.
  • You can even perform something as simple as fetching your most recent data, after specific interval or given time.

for more reference https://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800

--

--

Jitesh Mohite
FlutterWorld

I am technology enthusiastic, want to learn things quickly and dive deep inside it. I always believe in developing logical things which makes impact on end user