Skip to content

Instantly share code, notes, and snippets.

@lucasdealmeida91
Created October 29, 2024 15:41
Show Gist options
  • Select an option

  • Save lucasdealmeida91/7f77949ef6a57b8e0bab900d3616e757 to your computer and use it in GitHub Desktop.

Select an option

Save lucasdealmeida91/7f77949ef6a57b8e0bab900d3616e757 to your computer and use it in GitHub Desktop.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:workmanager/workmanager.dart';
void main() {
runApp(const MyApp());
}
cancellAllTasks() async {
await Workmanager().cancelAll();
}
startWorkmanager() async {
await Workmanager().cancelAll();
WidgetsFlutterBinding.ensureInitialized();
await Workmanager().initialize(callbackDispatcher, isInDebugMode: true);
await Workmanager().registerPeriodicTask(
DateTime.now().second.toString() + "sendTelemetry",
"sendTelemetry",
initialDelay: Duration(seconds: 10),
frequency: Duration(minutes: 15),
);
await Workmanager().registerPeriodicTask(
DateTime.now().second.toString() + "sendData",
"sendData",
initialDelay: Duration(seconds: 10),
frequency: Duration(minutes: 15),
);
}
@pragma('vm:entry-point')
Future<void> callbackDispatcher() async{
Workmanager().executeTask((task, inputData) async {
switch (task) {
case "sendTelemetry":
try {
print("* INIT Workmanager sendTelemetry *");
// TelemetryModel telemetry = await TelemetryService().getTelemetryBackGround();
// await LocalTelemetryService.create(telemetry);
print(
":::::::::::::::::::::::::::: TELEMETRY DATA IN BACKGROUND :::::::::::::::::::::::::::::::::::");
print(
"---------------------------------------------------------------------------------------------");
print(DateTime.now().toString());
print(
"---------------------------------------------------------------------------------------------");
print(
":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::");
await Future.delayed(Duration(seconds: 5));
print("* END Workmanager sendTelemetry *");
} catch (e) {
print("Error: $e");
}
break;
default:
print("Default");
}
return Future.value(true);
});
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("Flutter WorkManager Example"),
ElevatedButton(
child: Text("Start the Flutter background service"),
onPressed: () {
startWorkmanager();
},
),
ElevatedButton(
child: Text("Cancel all tasks"),
onPressed: () {
cancellAllTasks();
},
),
ElevatedButton(
child: Text("Chamando peridicamente"),
onPressed: () {
print("ENTREI NA FUNÇÃO DE CHAMAR PERIODICAMENTE");
Timer.periodic(const Duration(seconds: 30), (timer) async {
await callbackDispatcher();
});
Timer.periodic(Duration(seconds: 10), (timer) {
print("Chamando peridicamente");
});
},
)
],
));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment