Created
October 29, 2024 15:41
-
-
Save lucasdealmeida91/7f77949ef6a57b8e0bab900d3616e757 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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