Sbeam.dev

技术相关分享,以及杂谈

0%

SbeamRSS介绍-基于flutter的RSS阅读器

简介

当今,我们接收信息越发依赖于社交媒体与新闻应用程序,推荐算法几乎决定了我们每天的信息输入。而RSS作为一种传统的聚合信息形式,可以为我们提供更大的信息自主。苦于市面上的Android RSS阅读器都不能满足需要,或是需要收费,或是兼容性差,或是UI不够舒服,我开发了SbeamRSS以满足自己的阅读需求。该应用基于flutter框架开发,在Github免费开源,目前已在谷歌商店上架。

topbig.png

主要功能

  • 添加并编辑RSS源(支持RSS和Atom格式,推荐使用包含文章全文的源,例如RSShub)
  • 获取文章并进行阅读,阅读界面可自定义字体和字号。
  • 收藏文章以方便之后阅读
  • 分享文章,在浏览器打开
  • 支持系统深色模式

用家可以访问上面的Github页面了解进度和阅读文档(英文)。欢迎提issue和PR。

开发过程

本人初学flutter,本应用是第一个项目,因此断断续续半年多才做成目前的样子。得益于flutter框架,极大节省了开发的时间耗费。

项目主体结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
├── components
│   └── htmlparse.dart
├── databases
│   ├── favdb.dart
│   ├── feeddb.dart
│   └── sourcedb.dart
├── interfaces
│   ├── favorite.dart
│   ├── feeds.dart
│   ├── home.dart
│   ├── reader.dart
│   ├── settings.dart
│   └── subs.dart
├── main.dart
└── models
├── favmodel.dart
├── feedmodel.dart
├── readermodel.dart
├── sourcemodel.dart
└── thememodel.dart

database目录内为数据库储存部分。主要利用sqflite包,以sql形式存储RSS源以及获取的文章。一些应用设置用shared_preferences包储存。

models部分是用于前后端交互的内容。利用provider包进行状态管理,实现刷新文章、编辑源等操作。

interfaces部分是前端界面。采用flutter推荐使用的material控件,符合material设计规则。用incrementally_loading_listview实现下拉刷新效果。

目前的一些问题

  • 阅读界面不能选择复制文字。见issue
  • 阅读界面显示的进度条若根据滑动实时更新会产生严重卡顿,目前只能在滑动完成后进行更新。