@@ -59,7 +59,7 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
59
59
) async {
60
60
emit (state.copyWith (status: EditSourceStatus .loading));
61
61
try {
62
- final responses = await Future .wait ([
62
+ final responses = await Future .wait < dynamic > ([
63
63
_sourcesRepository.read (id: _sourceId),
64
64
_countriesRepository.readAll (
65
65
sort: [const SortOption ('name' , SortOrder .asc)],
@@ -73,9 +73,16 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
73
73
final countriesPaginated = responses[1 ] as PaginatedResponse <Country >;
74
74
final languagesPaginated = responses[2 ] as PaginatedResponse <Language >;
75
75
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
+ }
79
86
80
87
emit (
81
88
state.copyWith (
@@ -241,9 +248,10 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
241
248
emit (state.copyWith (countrySearchTerm: event.searchTerm));
242
249
try {
243
250
final countriesResponse = await _countriesRepository.readAll (
244
- filter: {'name' : event.searchTerm},
251
+ filter:
252
+ event.searchTerm.isNotEmpty ? {'name' : event.searchTerm} : null ,
245
253
sort: [const SortOption ('name' , SortOrder .asc)],
246
- ) as PaginatedResponse < Country > ;
254
+ );
247
255
248
256
emit (
249
257
state.copyWith (
@@ -272,10 +280,14 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
272
280
273
281
try {
274
282
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 ,
277
289
sort: [const SortOption ('name' , SortOrder .asc)],
278
- ) as PaginatedResponse < Country > ;
290
+ );
279
291
280
292
emit (
281
293
state.copyWith (
@@ -304,9 +316,10 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
304
316
emit (state.copyWith (languageSearchTerm: event.searchTerm));
305
317
try {
306
318
final languagesResponse = await _languagesRepository.readAll (
307
- filter: {'name' : event.searchTerm},
319
+ filter:
320
+ event.searchTerm.isNotEmpty ? {'name' : event.searchTerm} : null ,
308
321
sort: [const SortOption ('name' , SortOrder .asc)],
309
- ) as PaginatedResponse < Language > ;
322
+ );
310
323
311
324
emit (
312
325
state.copyWith (
@@ -335,10 +348,14 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
335
348
336
349
try {
337
350
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 ,
340
357
sort: [const SortOption ('name' , SortOrder .asc)],
341
- ) as PaginatedResponse < Language > ;
358
+ );
342
359
343
360
emit (
344
361
state.copyWith (
0 commit comments