0

Hello Guys!

for Example: I want when the user clicks on the button Start 30 minutes timer and button disable. If the user closes the application but the timer doesn't stop it should work in the background how can I create this system? In simple words I want it like candy crush when life is 0 then start background timer of 1hour after 1 hour live is full 5...

I search at pub.dev but can't find any plugins or package

Shubham Narkhede
  • 2,002
  • 1
  • 5
  • 13
Muhammad Anus
  • 320
  • 4
  • 14
  • Take a look here https://medium.com/flutter/executing-dart-in-the-background-with-flutter-plugins-and-geofencing-2b3e40a1a124 – rstrelba Dec 26 '20 at 12:47
  • Refer this https://navinkumar0118.medium.com/flutter-countdown-timer-works-in-background-f87488b0ba4c – Navin Kumar Aug 17 '23 at 17:36

1 Answers1

1

Maybe this will work for you This is also running when the app is in background

import 'package:flutter/material.dart';
import 'dart:ui';
import 'dart:async';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Counter App',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Counter App'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {

  AnimationController controller;

  Duration get duration => controller.duration * controller.value;

  bool get expired => duration.inSeconds == 0;

  @override
  void initState() {
    controller = AnimationController(
      vsync: this,
      duration: Duration(seconds: 30),
    );
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            AnimatedBuilder(
                animation: controller,
                builder: (BuildContext context, Widget child) {
                  return new Text(
                    '${duration.inSeconds}',
                    style: new TextStyle(
                      fontWeight: FontWeight.bold,
                      fontSize: 50.0,
                    ),
                  );
                }),
            new Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: <Widget>[
                new RaisedButton(
                  padding: const EdgeInsets.all(15.0),
                  textColor: Colors.white,
                  color: Colors.redAccent,
                  onPressed: () {
                    setState(() {
                      controller.reverse(from: 1);
                    });
                  },
                  child: new Text("Start"),
                ),
                new RaisedButton(
                  padding: const EdgeInsets.all(15.0),
                  textColor: Colors.white,
                  color: Colors.redAccent,
                  onPressed: () {
                    setState(() {
                      controller.reset();
                    });
                  },
                  child: new Text("Reset"),
                ),
              ],
            ),
          ],
        ),
      ), 
    );
  }
}

You can check this link

Shubham Narkhede
  • 2,002
  • 1
  • 5
  • 13