asdda

adsada
 avatar
unknown
plain_text
2 years ago
1.7 kB
4
Indexable
class _CalculateUserActivityTimeTestViewState extends State<CalculateUserActivityTimeTestView>
    with WidgetsBindingObserver {
  late Timer _timer;

  ActivityModel model = ActivityModel(0);

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
    _initializeTimer();
  }

  void _initializeTimer() {
    _timer = Timer.periodic(const Duration(seconds: 1), (Timer timer) {
      model.userActivityTotalSecond = timer.tick;
      print(model.userActivityTotalSecond);
      setState(() {});
    });
  }

  void _stopTimer() {
    if (_timer.isActive) {
      _timer.cancel();
    }
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.inactive:
        print("Inactive");
        break;
      case AppLifecycleState.paused:
        _stopTimer();
        break;
      case AppLifecycleState.resumed:
        _initializeTimer();
        break;
      case AppLifecycleState.detached:
        print("detached");
        break;
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("User Activity Time"),
      ),
      floatingActionButton: FloatingActionButton(
        child: const Icon(Icons.stop),
        onPressed: () {
          _stopTimer();
        },
      ),
      body: Center(
        child: Text("Total second: ${model.userActivityTotalSecond}"),
      ),
    );
  }
}

class ActivityModel {
  late int userActivityTotalSecond;
  ActivityModel(this.userActivityTotalSecond);
}
Editor is loading...