Skip to content

Commit 46aed3d

Browse files
committed
fix: move VoicemailCubit provider from SettingsScreenPage to VoicemailScreenPage
VoicemailCubit was provided at the settings level but consumed in a separate route, causing ProviderNotFoundException on navigation. Moving it to VoicemailScreenPage makes the provider scope match the consumer.
1 parent 1d588ba commit 46aed3d

2 files changed

Lines changed: 29 additions & 33 deletions

File tree

lib/features/settings/features/voicemail/view/voicemail_screen_page.dart

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1-
import 'package:flutter/material.dart';
1+
import 'package:flutter/widgets.dart';
22

33
import 'package:auto_route/auto_route.dart';
4+
import 'package:flutter_bloc/flutter_bloc.dart';
45
import 'package:provider/provider.dart';
56

7+
import 'package:webtrit_phone/app/notifications/notifications.dart';
8+
import 'package:webtrit_phone/blocs/blocs.dart';
69
import 'package:webtrit_phone/data/data.dart';
10+
import 'package:webtrit_phone/repositories/repositories.dart';
711

12+
import '../bloc/voicemail_cubit.dart';
813
import '../models/models.dart';
914
import '../utils/utils.dart';
1015

@@ -20,6 +25,8 @@ class VoicemailScreenPage extends StatelessWidget {
2025
final secureStorage = context.read<SecureStorage>();
2126
final appTime = context.read<AppTime>();
2227
final appPath = context.read<AppPath>();
28+
final callBloc = context.read<CallBloc>();
29+
final notificationsBloc = context.read<NotificationsBloc>();
2330

2431
final mediaHeaders = MediaHeadersBuilder(secureStorage: secureStorage).build();
2532

@@ -29,6 +36,13 @@ class VoicemailScreenPage extends StatelessWidget {
2936
mediaHeaders: mediaHeaders,
3037
);
3138

32-
return Provider<VoicemailScreenContext>(create: (context) => screenContext, child: const VoicemailScreen());
39+
return BlocProvider(
40+
create: (context) => VoicemailCubit(
41+
repository: context.read<VoicemailRepository>(),
42+
onCallStarted: (number) => callBloc.add(CallControlEvent.started(number: number, video: false)),
43+
onSubmitNotification: (n) => notificationsBloc.add(NotificationsSubmitted(n)),
44+
),
45+
child: Provider<VoicemailScreenContext>(create: (context) => screenContext, child: const VoicemailScreen()),
46+
);
3347
}
3448
}
Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:flutter/material.dart';
1+
import 'package:flutter/widgets.dart';
22

33
import 'package:auto_route/auto_route.dart';
44
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -16,38 +16,20 @@ class SettingsScreenPage extends StatelessWidget {
1616

1717
@override
1818
Widget build(BuildContext context) {
19-
final voicemailRepository = context.read<VoicemailRepository>();
20-
final notificationsBloc = context.read<NotificationsBloc>();
21-
final callBloc = context.read<CallBloc>();
22-
2319
final settingsFeature = context.read<FeatureAccess>().settingsConfig;
2420

25-
final widget = SettingsScreen(sections: settingsFeature.sections);
26-
27-
final provider = MultiBlocProvider(
28-
providers: [
29-
BlocProvider(
30-
create: (context) {
31-
return SettingsBloc(
32-
notificationsBloc: context.read<NotificationsBloc>(),
33-
appBloc: context.read<AppBloc>(),
34-
userRepository: context.read<UserRepository>(),
35-
voicemailRepository: context.read<VoicemailRepository>(),
36-
sessionRepository: context.read(),
37-
appPermissions: context.read<AppPermissions>(),
38-
);
39-
},
40-
),
41-
BlocProvider(
42-
create: (context) => VoicemailCubit(
43-
repository: voicemailRepository,
44-
onCallStarted: (number) => callBloc.add(CallControlEvent.started(number: number, video: false)),
45-
onSubmitNotification: (n) => notificationsBloc.add(NotificationsSubmitted(n)),
46-
),
47-
)
48-
],
49-
child: widget,
21+
return BlocProvider(
22+
create: (context) {
23+
return SettingsBloc(
24+
notificationsBloc: context.read<NotificationsBloc>(),
25+
appBloc: context.read<AppBloc>(),
26+
userRepository: context.read<UserRepository>(),
27+
voicemailRepository: context.read<VoicemailRepository>(),
28+
sessionRepository: context.read(),
29+
appPermissions: context.read<AppPermissions>(),
30+
);
31+
},
32+
child: SettingsScreen(sections: settingsFeature.sections),
5033
);
51-
return provider;
5234
}
5335
}

0 commit comments

Comments
 (0)