Skip to content

Commit a73d40d

Browse files
authored
Merge pull request #8 from FlutterWiz/fix-bloc-comm
remove unnecessary cubit
2 parents 6752dd3 + be7afca commit a73d40d

File tree

7 files changed

+41
-64
lines changed

7 files changed

+41
-64
lines changed

lib/core/di/dependency_injector.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import 'package:get_it/get_it.dart';
2+
import 'package:mapmotion_flutter/core/interfaces/i_app_life_cycle_service.dart';
23
import 'package:mapmotion_flutter/core/interfaces/i_location_permission_service.dart';
34
import 'package:mapmotion_flutter/core/interfaces/i_location_service.dart';
5+
import 'package:mapmotion_flutter/data/services/app_life_cycle_service.dart';
46
import 'package:mapmotion_flutter/data/services/location_permission_service.dart';
57
import 'package:mapmotion_flutter/data/services/location_service.dart';
6-
import 'package:mapmotion_flutter/presentation/blocs/application_life_cycle/application_life_cycle_cubit.dart';
78
import 'package:mapmotion_flutter/presentation/blocs/location/location_cubit.dart';
89
import 'package:mapmotion_flutter/presentation/blocs/permission/permission_cubit.dart';
910

@@ -13,9 +14,11 @@ void injectionSetup() {
1314
// Services
1415
getIt.registerLazySingleton<ILocationPermissionService>(() => LocationPermissionService());
1516
getIt.registerLazySingleton<ILocationService>(() => LocationService());
17+
getIt.registerLazySingleton<IAppLifeCycleService>(() => AppLifeCycleService());
1618

1719
// Cubits
18-
getIt.registerLazySingleton<PermissionCubit>(() => PermissionCubit(getIt<ILocationPermissionService>()));
19-
getIt.registerLazySingleton<ApplicationLifeCycleCubit>(() => ApplicationLifeCycleCubit());
20+
getIt.registerLazySingleton<PermissionCubit>(
21+
() => PermissionCubit(getIt<ILocationPermissionService>(), getIt<IAppLifeCycleService>()),
22+
);
2023
getIt.registerLazySingleton<LocationCubit>(() => LocationCubit());
2124
}

lib/core/init/app_widget.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_bloc/flutter_bloc.dart';
33
import 'package:mapmotion_flutter/core/di/dependency_injector.dart';
4-
import 'package:mapmotion_flutter/presentation/blocs/application_life_cycle/application_life_cycle_cubit.dart';
54
import 'package:mapmotion_flutter/presentation/blocs/location/location_cubit.dart';
65
import 'package:mapmotion_flutter/presentation/blocs/permission/permission_cubit.dart';
76
import 'package:mapmotion_flutter/presentation/views/map/map_view.dart';
@@ -16,9 +15,6 @@ class AppWidget extends StatelessWidget {
1615
BlocProvider(
1716
create: (context) => getIt<PermissionCubit>()..initialize(),
1817
),
19-
BlocProvider(
20-
create: (context) => getIt<ApplicationLifeCycleCubit>(),
21-
),
2218
BlocProvider(
2319
create: (context) => getIt<LocationCubit>()..initialize(),
2420
),
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
abstract class IAppLifeCycleService {
2+
Stream<bool> get isResumedStream;
3+
Future<void> close();
4+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import 'dart:async';
2+
3+
import 'package:flutter/material.dart';
4+
import 'package:mapmotion_flutter/core/interfaces/i_app_life_cycle_service.dart';
5+
6+
class AppLifeCycleService with WidgetsBindingObserver implements IAppLifeCycleService {
7+
final StreamController<bool> _isResumedController = StreamController<bool>();
8+
9+
AppLifeCycleService() {
10+
WidgetsBinding.instance.addObserver(this);
11+
}
12+
13+
@override
14+
void didChangeAppLifecycleState(AppLifecycleState state) {
15+
_isResumedController.add(state == AppLifecycleState.resumed);
16+
super.didChangeAppLifecycleState(state);
17+
}
18+
19+
@override
20+
Stream<bool> get isResumedStream => _isResumedController.stream;
21+
22+
@override
23+
Future<void> close() async {
24+
WidgetsBinding.instance.removeObserver(this);
25+
await _isResumedController.close();
26+
}
27+
}

lib/presentation/blocs/application_life_cycle/application_life_cycle_cubit.dart

Lines changed: 0 additions & 24 deletions
This file was deleted.

lib/presentation/blocs/application_life_cycle/application_life_cycle_state.dart

Lines changed: 0 additions & 27 deletions
This file was deleted.

lib/presentation/blocs/permission/permission_cubit.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,19 @@ import 'dart:async';
22

33
import 'package:flutter_bloc/flutter_bloc.dart';
44
import 'package:mapmotion_flutter/core/constants/enums/location_permission_status_enum.dart';
5-
import 'package:mapmotion_flutter/core/di/dependency_injector.dart';
5+
import 'package:mapmotion_flutter/core/interfaces/i_app_life_cycle_service.dart';
66
import 'package:mapmotion_flutter/core/interfaces/i_location_permission_service.dart';
7-
import 'package:mapmotion_flutter/presentation/blocs/application_life_cycle/application_life_cycle_cubit.dart';
87
import 'package:mapmotion_flutter/presentation/blocs/permission/permission_state.dart';
98

109
class PermissionCubit extends Cubit<PermissionState> {
11-
PermissionCubit(this._permissionService) : super(PermissionState.initial());
10+
PermissionCubit(this._permissionService, this._appLifeCycleService) : super(PermissionState.initial());
1211

1312
final ILocationPermissionService _permissionService;
13+
final IAppLifeCycleService _appLifeCycleService;
1414

1515
StreamSubscription<bool>? _locationPermissionStatusSubscription;
1616
StreamSubscription<bool>? _appLifeCycleSubscription;
1717

18-
ApplicationLifeCycleCubit get _appLifeCycleCubit => getIt<ApplicationLifeCycleCubit>();
19-
2018
@override
2119
Future<void> close() {
2220
_appLifeCycleSubscription?.cancel();
@@ -34,7 +32,7 @@ class PermissionCubit extends Cubit<PermissionState> {
3432
});
3533

3634
_appLifeCycleSubscription?.cancel();
37-
_appLifeCycleSubscription = _appLifeCycleCubit.stream.map((s) => s.isResumed).listen((isResumed) async {
35+
_appLifeCycleSubscription = _appLifeCycleService.isResumedStream.listen((isResumed) async {
3836
if (isResumed) {
3937
final isGranted = await _permissionService.isLocationPermissionGranted();
4038

0 commit comments

Comments
 (0)