@@ -22,18 +22,12 @@ class EditHeadlinePage extends StatelessWidget {
2222
2323 @override
2424 Widget build (BuildContext context) {
25- // The list of all countries is fetched once and cached in the
26- // ContentManagementBloc. We read it here and provide it to the
27- // EditHeadlineBloc.
28- final contentManagementState = context.watch <ContentManagementBloc >().state;
29- final allCountries = contentManagementState.allCountries;
30-
3125 return BlocProvider (
3226 create: (context) => EditHeadlineBloc (
3327 headlinesRepository: context.read <DataRepository <Headline >>(),
3428 sourcesRepository: context.read <DataRepository <Source >>(),
3529 topicsRepository: context.read <DataRepository <Topic >>(),
36- countries: allCountries,
30+ countries: context. read < ContentManagementBloc >().state. allCountries,
3731 headlineId: headlineId,
3832 )..add (const EditHeadlineLoaded ()),
3933 child: const _EditHeadlineView (),
@@ -106,14 +100,23 @@ class _EditHeadlineViewState extends State<_EditHeadlineView> {
106100 ),
107101 ],
108102 ),
109- body: BlocConsumer < EditHeadlineBloc , EditHeadlineState >(
103+ body: BlocListener < ContentManagementBloc , ContentManagementState >(
110104 listenWhen: (previous, current) =>
111- previous.status != current.status ||
112- previous.initialHeadline != current.initialHeadline,
113- listener: (context, state) {
114- if (state.status == EditHeadlineStatus .success &&
115- state.updatedHeadline != null &&
116- ModalRoute .of (context)! .isCurrent) {
105+ previous.allCountriesStatus != current.allCountriesStatus &&
106+ current.allCountriesStatus == ContentManagementStatus .success,
107+ listener: (context, contentState) {
108+ context.read <EditHeadlineBloc >().add (
109+ EditHeadlineDataUpdated (countries: contentState.allCountries),
110+ );
111+ },
112+ child: BlocConsumer <EditHeadlineBloc , EditHeadlineState >(
113+ listenWhen: (previous, current) =>
114+ previous.status != current.status ||
115+ previous.initialHeadline != current.initialHeadline,
116+ listener: (context, state) {
117+ if (state.status == EditHeadlineStatus .success &&
118+ state.updatedHeadline != null &&
119+ ModalRoute .of (context)! .isCurrent) {
117120 ScaffoldMessenger .of (context)
118121 ..hideCurrentSnackBar ()
119122 ..showSnackBar (
@@ -141,14 +144,14 @@ class _EditHeadlineViewState extends State<_EditHeadlineView> {
141144 _imageUrlController.text = state.imageUrl;
142145 }
143146 },
144- builder: (context, state) {
145- if (state.status == EditHeadlineStatus .loading) {
146- return LoadingStateWidget (
147- icon: Icons .newspaper,
148- headline: l10n.loadingHeadline,
149- subheadline: l10n.pleaseWait,
150- );
151- }
147+ builder: (context, state) {
148+ if (state.status == EditHeadlineStatus .loading) {
149+ return LoadingStateWidget (
150+ icon: Icons .newspaper,
151+ headline: l10n.loadingHeadline,
152+ subheadline: l10n.pleaseWait,
153+ );
154+ }
152155
153156 if (state.status == EditHeadlineStatus .failure &&
154157 state.initialHeadline == null ) {
0 commit comments