Как реализовать средний RSS-канал во Flutter
- Вступление
- Создание приложения
- Шаг 1. Получите RSS-канал, с которым хотите работать
- Шаг 2. Настройте приложение Flutter
- Шаг 3. Реализуйте получение данных RSS-канала
- Шаг 4. Решите, хотите ли вы отфильтровать комментарии
- Шаг 5. Отфильтруйте комментарии (необязательно)
- Шаг 6. Отобразите данные в пользовательском интерфейсе
- Ресурсы
Вступление
Я решил поэкспериментировать с RSS-каналом Medium, потому что он упростил бы создание MVP для приложения Flutter, над которым я работаю. Кроме того, если RSS-канал Medium изменится, чтобы разрешить доступ ко всем статьям, я буду знать, как это реализовать.
На данный момент этот подход действительно полезен только для профилей пользователей Medium и публикаций, которые содержат менее 10 сообщений и не оставляют комментарии на Medium.
Если у вас есть всего несколько статей, которые вам нужно перенести из Medium в приложение Flutter, такое как веб-сайт или мобильное приложение, созданное с помощью Flutter, это отличное решение.
Однако, если у вас больше контента или вы публикуете более нескольких комментариев, канал Medium RSS не так полезен, потому что он показывает только 10 самых последних элементов, а элементы включают как статьи, так и комментарии.
К сожалению, именно так Medium настроили свой RSS-канал. Если вы знаете, как вытащить все статьи из профиля / публикации среднего пользователя , дайте мне знать в комментариях.
Вам также необходимо отфильтровать комментарии, если вы хотите просто получить статьи; Я покажу вам, как я это реализовал.
Создание приложения
Я создал приложение Flutter, которое загружает статьи из моего канала Medium RSS в приложение Flutter.
Код находится здесь, если вы хотите следовать по тексту.
Шаг 1. Получите RSS-канал, с которым хотите работать
Первое, что вам нужно сделать, это выяснить, с каким RSS-потоком вы собираетесь работать.
Если вы работаете с профилем пользователя, вы можете получить доступ к RSS-каналу, перейдя по адресу «https://medium.com/feed/@uvesername.
Точно так же вы можете получить доступ к RSS-каналу публикации, перейдя в
«Https://medium.com/feed/@publicationName.
RSS-канал моего профиля пользователя: https://medium.com/feed/@TJgrapes.
При переходе по ссылке вы должны увидеть что-то вроде этого:
Если у вас возникли проблемы, взгляните на Официальную документацию Medium по доступу к RSS-каналам.
RSS-канал содержит 10 самых последних элементов, которые включают как статьи, опубликованные в профиле / учетной записи пользователя, так и комментарии, сделанные из этого профиля / учетной записи пользователя.
Мы будем использовать ссылку на RSS-канал для доступа к его данным в приложении.
Шаг 2. Настройте приложение Flutter
Добавьте в файл pubspec.yaml следующие зависимости:
- Http — для вызова сети для получения данных RSS-канала.
- Веб-канал — для анализа данных RSS-канала и доступа к ним.
- Url_launcher — для запуска статьи на Medium по ссылке на статью.
Шаг 3. Реализуйте получение данных RSS-канала
Во-первых, получите данные RSS-канала, используя ссылку RSS-канала; просто замените MEDIUM_PROFILE_RSS_FEED_URL на URL-адрес RSS-канала, который вы используете. (например, https://medium.com/feed/@TJgrapes)
Затем вызовите метод getMediumRSSFeedData () в initState () и извлеките данные. После завершения getMediumRSSFeedData () мы можем получить доступ к переменной RSSFeed (показанной ниже как feed).
Мы можем получить метаданные о RSS-канале, например количество элементов, которое должно быть 10.
Шаг 4. Решите, хотите ли вы отфильтровать комментарии
Помните, я сказал, что элементы также включают комментарии? Вам нужно будет отфильтровать комментарии, если вы хотите получить только статьи. Вот как вы их различаете.
Ниже показан элемент в RSS-потоке, который представляет собой комментарий, который я написал талантливому разработчику программного обеспечения на Medium:
Как видите, заголовок элемента — это сам комментарий.
Ниже показан элемент в RSS-канале, который представляет собой статью, которую я опубликовал на Medium:
Заголовок статьи — это заголовок статьи, а описание — подзаголовок статьи.
Чтобы отличить комментарий от статьи, мы можем проверить, есть ли у элемента описание; если да, то это статья, потому что только статьи могут иметь субтитры.
Шаг 5. Отфильтруйте комментарии (необязательно)
Чтобы отфильтровать комментарии, мы перебираем каждый элемент в RssFeed; если у него есть описание, мы знаем, что это статья.
Затем мы можем получить доступ к заголовку, ссылке и дате публикации статьи Medium, размещенной в профиле пользователя / публикации.
Здесь я просто просматриваю каждый RSSItem и добавляю его в список, если это статья.
Шаг 6. Отобразите данные в пользовательском интерфейсе
Чтобы не усложнять задачу, мы можем просто создать список для отображения данных следующим образом:
И реализуем метод запуска статьи на Medium при нажатии:
Вот как это выглядит:
Вот полный код для главного экрана:
Ресурсы
Это было вдохновлено публикацией Джонатана Ингрэма — ознакомьтесь с ней, если вам нужен более глубокий общий подход к работе с RSS-потоками во Flutter.
Проект Github: https://github.com/ashtonjonesdev/ashton_jones_medium_feed
Документация по среднему RSS-каналу:
Https://help.medium.com/hc/en-us/articles/214874118-RSS-feeds
Работа с RSS-потоками во Flutter:
https://medium.com/@scottingram.scott/hacker-news-rss-app-in-flutter-976728b09361
Привет, я Эш ?? Давай подключимся!
? ashtonjones.dev | ? @TJgrapes | ✉️ [email protected]
??? Сертифицированный Google Android-инженер |
✍? Писатель |
??♂️ Стоик