Использование map вместо for для создания списка из модели класса, возвращающего ноль
Когда я реализую нумерацию страниц ListView
из данных, которые возвращаются с сервера, просто я могу проверить эту возможность разбивки на страницы, и это прекрасно работает, например, с помощью этого кода я могу создать столбец списка с помощью простых данных:
list.add(
PostItem((b) =>b
..title = 'lorem ipsum'
..colorInt = _randomGenerator.nextInt(0xFFFFFFFF)),
);
return BuiltList.of(list);
Теперь я пытаюсь получить данные с сервера и сделать эти данные, как с:
List<PostItem> list = [
PostItem((b)=>b..title = 'lorem ipsum'),
PostItem((b)=>b..title = 'lorem ipsum')
];
я получаю ошибку:
List<PostItem> list=[];
final response = await http.get(Constants.getPosts, headers: {"Accept": "application/json"});
final responseString = json.decode(response.body) as List;
List<ContentsModel> responses = responseString.map((j) =>
ContentsModel.fromJson(j)).toList();
responses.map((post)=>
list.add(PostItem((b) => b..title = post.title),));
return BuiltList.of(list);
в этой строке размером list
ноль:
response.map((post)=>list.add(PostItem((b) => b..title = post.title),));
мой ContentsModel
Содержание класса:
part 'contents_model.g.dart';
@JsonSerializable(nullable: false)
class ContentsModel{
int id;
String title;
String description;
ContentsModel(this.id, this.postId, this.title, this.description, this.type, this.featuredImages, this.slug, this.lang, this.visit, this.click, this.state, this.createdAt, this.updatedAt, this.categories);
factory ContentsModel.fromJson(Map<String,dynamic> json)=>_$ContentsModelFromJson(json);
Map<String,dynamic> toJson()=>_$ContentsModelToJson(this);
}
2 ответа
Вам нужно инициализировать свой список, прежде чем что-то добавить:
List<PostItem> list = [];
Изменения
responses.map((post)=>
list.add(PostItem((b) => b..title = post.title),));
в
responses.forEach((post)=>list.add(PostItem((b) =>b..title = post.title)));
решил мою проблему