The Webfeed Flutter package for Appeto SDK.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

67 Zeilen
2.0 KiB

  1. import 'package:webfeed/domain/atom_category.dart';
  2. import 'package:webfeed/domain/atom_link.dart';
  3. import 'package:webfeed/domain/atom_person.dart';
  4. import 'package:webfeed/domain/atom_source.dart';
  5. import 'package:webfeed/domain/media/media.dart';
  6. import 'package:webfeed/util/helpers.dart';
  7. import 'package:xml/xml.dart';
  8. class AtomItem {
  9. final String id;
  10. final String title;
  11. final String updated;
  12. final List<AtomPerson> authors;
  13. final List<AtomLink> links;
  14. final List<AtomCategory> categories;
  15. final List<AtomPerson> contributors;
  16. final AtomSource source;
  17. final String published;
  18. final String content;
  19. final String summary;
  20. final String rights;
  21. final Media media;
  22. AtomItem({
  23. this.id,
  24. this.title,
  25. this.updated,
  26. this.authors,
  27. this.links,
  28. this.categories,
  29. this.contributors,
  30. this.source,
  31. this.published,
  32. this.content,
  33. this.summary,
  34. this.rights,
  35. this.media,
  36. });
  37. factory AtomItem.parse(XmlElement element) {
  38. return AtomItem(
  39. id: findElementOrNull(element, "id")?.text,
  40. title: findElementOrNull(element, "title")?.text,
  41. updated: findElementOrNull(element, "updated")?.text,
  42. authors: element.findElements("author").map((element) {
  43. return AtomPerson.parse(element);
  44. }).toList(),
  45. links: element.findElements("link").map((element) {
  46. return AtomLink.parse(element);
  47. }).toList(),
  48. categories: element.findElements("category").map((element) {
  49. return AtomCategory.parse(element);
  50. }).toList(),
  51. contributors: element.findElements("contributor").map((element) {
  52. return AtomPerson.parse(element);
  53. }).toList(),
  54. source: AtomSource.parse(findElementOrNull(element, "source")),
  55. published: findElementOrNull(element, "published")?.text,
  56. content: findElementOrNull(element, "content")?.text,
  57. summary: findElementOrNull(element, "summary")?.text,
  58. rights: findElementOrNull(element, "rights")?.text,
  59. media: Media.parse(element),
  60. );
  61. }
  62. }