The Webfeed Flutter package for Appeto SDK.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

74 lignes
2.0 KiB

  1. import 'package:webfeed/domain/media/media.dart';
  2. import 'package:webfeed/domain/rss_category.dart';
  3. import 'package:webfeed/domain/rss_content.dart';
  4. import 'package:webfeed/domain/rss_enclosure.dart';
  5. import 'package:webfeed/domain/rss_source.dart';
  6. import 'package:webfeed/util/helpers.dart';
  7. import 'package:xml/xml.dart';
  8. import 'package:webfeed/util/helpers.dart';
  9. class RssItem {
  10. final String title;
  11. final String description;
  12. final String link;
  13. final List<RssCategory> categories;
  14. final String guid;
  15. final String pubDate;
  16. final String author;
  17. final String comments;
  18. final RssSource source;
  19. final RssContent content;
  20. final Media media;
  21. final RssEnclosure enclosure;
  22. RssItem({
  23. this.title,
  24. this.description,
  25. this.link,
  26. this.categories,
  27. this.guid,
  28. this.pubDate,
  29. this.author,
  30. this.comments,
  31. this.source,
  32. this.content,
  33. this.media,
  34. this.enclosure,
  35. });
  36. factory RssItem.parse(XmlElement element) {
  37. return new RssItem(
  38. title: findElementOrNull(element, "title")?.text,
  39. description: findElementOrNull(element, "description")?.text,
  40. link: findElementOrNull(element, "link")?.text,
  41. categories: element.findElements("category").map((element) {
  42. return new RssCategory.parse(element);
  43. }).toList(),
  44. guid: findElementOrNull(element, "guid")?.text,
  45. pubDate: findElementOrNull(element, "pubDate")?.text,
  46. author: findElementOrNull(element, "author")?.text,
  47. comments: findElementOrNull(element, "comments")?.text,
  48. source: RssSource.parse(findElementOrNull(element, "source")),
  49. content: RssContent.parse(findElementOrNull(element, "content:encoded")),
  50. media: Media.parse(element),
  51. enclosure: RssEnclosure.parse(findElementOrNull(element, "enclosure")),
  52. );
  53. }
  54. @override
  55. String toString() {
  56. return '''
  57. title: $title
  58. description: $description
  59. link: $link
  60. guid: $guid
  61. pubDate: $pubDate
  62. author: $author
  63. comments: $comments
  64. source: $source
  65. content: $content
  66. ''';
  67. }
  68. }