Skip to content

Commit

Permalink
fix: #6
Browse files Browse the repository at this point in the history
- back button double tap is stopping backgound service and canceling timer and systemNavigator.pop
  • Loading branch information
JadeKim042386 committed Jun 1, 2023
1 parent 2d8f63d commit cda5c08
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 16 deletions.
31 changes: 16 additions & 15 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'dart:async';
import 'dart:io';
import 'dart:isolate';
import 'dart:ui';

Expand Down Expand Up @@ -57,6 +56,7 @@ Future<void> onService(args) async {
final service = FlutterBackgroundService();
final servicePort = ReceivePort();
var isServiceRunning = await service.isRunning();
StreamSubscription<int>? tickerSubscription;
const ticker = Ticker();

Future<void> disposeService(String message) async {
Expand All @@ -66,30 +66,31 @@ Future<void> onService(args) async {
}
}

servicePort.listen((message) async {
if (message == 'stopService') {
await disposeService(message);
} else if (message is List) {
ticker.tick(ticks: message[0]).listen((duration) => service.invoke(
'sendTime', {'currentTime': duration, 'isBreak': message[1]}));
} else if (message == 'exit') {
await disposeService('stopService');
exit(0);
}
});
args[2].send(servicePort.sendPort);

if (!isServiceRunning) {
await service.startService();
}
ticker.tick(ticks: args[0]).listen((duration) async {
tickerSubscription = ticker.tick(ticks: args[0]).listen((duration) async {
var isServiceRunning = await service.isRunning();
if (isServiceRunning) {
service.invoke('sendTime', {'currentTime': duration, 'isBreak': args[1]});
} else {
args[2].send('pause');
}
});

servicePort.listen((message) async {
if (message == 'stopService') {
await disposeService(message);
} else if (message is List) {
tickerSubscription = ticker.tick(ticks: message[0]).listen((duration) =>
service.invoke(
'sendTime', {'currentTime': duration, 'isBreak': message[1]}));
} else if (message == 'exit') {
await disposeService('stopService');
tickerSubscription!.cancel();
}
});
args[2].send(servicePort.sendPort);
}

Future<void> initializeService() async {
Expand Down
5 changes: 4 additions & 1 deletion lib/screens/home_screen.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:pomotimer/ad_helper.dart';
Expand Down Expand Up @@ -67,6 +68,7 @@ class _HomeScreenState extends State<HomeScreen> with WidgetsBindingObserver {
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
lifecycleState = state;
print(state);
super.didChangeAppLifecycleState(state);
}

Expand Down Expand Up @@ -112,7 +114,7 @@ class _HomeScreenState extends State<HomeScreen> with WidgetsBindingObserver {
}
}

Future<bool> onWillPop() {
Future<bool> onWillPop() async {
DateTime now = DateTime.now();
if (currentBackPressTime == null ||
now.difference(currentBackPressTime!) > const Duration(seconds: 2)) {
Expand All @@ -122,6 +124,7 @@ class _HomeScreenState extends State<HomeScreen> with WidgetsBindingObserver {
final isolatePort = context.read<TimerBloc>().isolatePort;
if (isolatePort != null) {
isolatePort.send('exit');
await SystemNavigator.pop();
}
return Future.value(true);
}
Expand Down

0 comments on commit cda5c08

Please sign in to comment.