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.1 KiB

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