@@ -59,7 +59,7 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
5959 ) async {
6060 emit (state.copyWith (status: EditSourceStatus .loading));
6161 try {
62- final responses = await Future .wait ([
62+ final responses = await Future .wait < dynamic > ([
6363 _sourcesRepository.read (id: _sourceId),
6464 _countriesRepository.readAll (
6565 sort: [const SortOption ('name' , SortOrder .asc)],
@@ -73,9 +73,16 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
7373 final countriesPaginated = responses[1 ] as PaginatedResponse <Country >;
7474 final languagesPaginated = responses[2 ] as PaginatedResponse <Language >;
7575
76- final selectedLanguage = languagesPaginated.items
77- orElse: () => source.language,
78- );
76+ Language ? selectedLanguage;
77+ try {
78+ // Find the equivalent language object from the full list.
79+ // This ensures the DropdownButton can identify it by reference.
80+ selectedLanguage = languagesPaginated.items.firstWhere (
81+ (listLanguage) => listLanguage.id == source.language? .id,
82+ );
83+ } catch (_) {
84+ selectedLanguage = source.language;
85+ }
7986
8087 emit (
8188 state.copyWith (
@@ -241,9 +248,10 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
241248 emit (state.copyWith (countrySearchTerm: event.searchTerm));
242249 try {
243250 final countriesResponse = await _countriesRepository.readAll (
244- filter: {'name' : event.searchTerm},
251+ filter:
252+ event.searchTerm.isNotEmpty ? {'name' : event.searchTerm} : null ,
245253 sort: [const SortOption ('name' , SortOrder .asc)],
246- ) as PaginatedResponse < Country > ;
254+ );
247255
248256 emit (
249257 state.copyWith (
@@ -272,10 +280,14 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
272280
273281 try {
274282 final countriesResponse = await _countriesRepository.readAll (
275- cursor: state.countriesCursor,
276- filter: {'name' : state.countrySearchTerm},
283+ pagination: state.countriesCursor != null
284+ ? PaginationOptions (cursor: state.countriesCursor)
285+ : null ,
286+ filter: state.countrySearchTerm.isNotEmpty
287+ ? {'name' : state.countrySearchTerm}
288+ : null ,
277289 sort: [const SortOption ('name' , SortOrder .asc)],
278- ) as PaginatedResponse < Country > ;
290+ );
279291
280292 emit (
281293 state.copyWith (
@@ -304,9 +316,10 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
304316 emit (state.copyWith (languageSearchTerm: event.searchTerm));
305317 try {
306318 final languagesResponse = await _languagesRepository.readAll (
307- filter: {'name' : event.searchTerm},
319+ filter:
320+ event.searchTerm.isNotEmpty ? {'name' : event.searchTerm} : null ,
308321 sort: [const SortOption ('name' , SortOrder .asc)],
309- ) as PaginatedResponse < Language > ;
322+ );
310323
311324 emit (
312325 state.copyWith (
@@ -335,10 +348,14 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
335348
336349 try {
337350 final languagesResponse = await _languagesRepository.readAll (
338- cursor: state.languagesCursor,
339- filter: {'name' : state.languageSearchTerm},
351+ pagination: state.languagesCursor != null
352+ ? PaginationOptions (cursor: state.languagesCursor)
353+ : null ,
354+ filter: state.languageSearchTerm.isNotEmpty
355+ ? {'name' : state.languageSearchTerm}
356+ : null ,
340357 sort: [const SortOption ('name' , SortOrder .asc)],
341- ) as PaginatedResponse < Language > ;
358+ );
342359
343360 emit (
344361 state.copyWith (
0 commit comments