A cross-platform Markdown Viewer app built with Flutter. Open .md and .markdown files from your device and view them with rich rendering, search, and theme support.
- File Picker — Open
.md/.markdownfiles from device storage - Rich Markdown Rendering — Headings, inline formatting, code blocks, tables, blockquotes, links, and images
- Badge & Image Support — Shields.io badges (auto-converted to PNG), SVG via
flutter_svg, raster images with loading indicators - Light / Dark / System Theme — Toggle between modes, persisted across sessions
- Link Handling — External URLs open in browser via
url_launcher
- File History — Recent files stored in Hive, reopen without re-picking
- In-Document Search — Case-insensitive search with match count, next/previous controls, and tappable result snippets
- In-Content Highlighting — Active search query is highlighted in rendered markdown
- Riverpod State Management —
AsyncNotifierfor file state,Notifierfor theme and search
- Share / Export — Share markdown files, copy to clipboard
- PDF Export — Structured PDF rendering with parsed markdown blocks and inline formatting
- Settings Screen — Theme selector and app info
| Category | Technology |
|---|---|
| Framework | Flutter |
| Language | Dart |
| State Management | Riverpod (flutter_riverpod) |
| Local Storage | Hive (hive_flutter) |
| Markdown Rendering | markdown_widget |
| SVG Support | flutter_svg |
| File Picking | file_picker |
| Typography | Google Fonts |
| URL Handling | url_launcher |
| Sharing | share_plus |
| PDF Export | pdf, printing |
lib/
├── main.dart # App entry, Hive init, Riverpod, routes
├── models/
│ ├── markdown_file.dart # MarkdownFile data model (Hive)
│ └── markdown_file.g.dart # Hive TypeAdapter
├── providers/
│ ├── theme_provider.dart # Light/dark/system toggle
│ ├── file_provider.dart # File loading + history
│ ├── search_provider.dart # In-document search state
│ └── service_providers.dart # DI providers for app services
├── screens/
│ ├── home_screen.dart # Home with history, FAB, settings
│ ├── viewer_screen.dart # Markdown display + search UI
│ └── settings_screen.dart # Theme, font size, about
├── services/
│ ├── file_service.dart # File picker + reading
│ ├── markdown_service.dart # Content validation
│ ├── markdown_parser.dart # Markdown block parser for export
│ ├── history_service.dart # Recent files (Hive)
│ ├── search_service.dart # Text search engine
│ └── export_service.dart # Share + clipboard + PDF export
├── utils/
│ ├── constants.dart # App constants, colors, keys
│ └── theme.dart # Light + dark ThemeData
└── widgets/
├── markdown_viewer_widget.dart # Themed markdown renderer
└── file_list_widget.dart # Reusable file list tile
- Flutter SDK (stable channel)
- Android Studio / VS Code
- Android emulator or physical device
# Clone the repository
git clone https://github.com/YadneshTeli/MarkDown-Viewer.git
cd MarkDown-Viewer
# Install dependencies
flutter pub get
# Run on connected device
flutter runWindows users: Enable Developer Mode (
start ms-settings:developers) for Flutter plugin symlink support.
This project uses GitHub Actions to automatically build and publish releases across platforms.
# Tag the current commit (example)
git tag -a v1.1.0 -m "Release v1.1.0"
# Push the tag to trigger the release workflow
git push origin v1.1.0This will automatically trigger a multi-os matrix that:
- Runs
flutter analyzeto verify code quality - Builds an Android APK and App Bundle (AAB) on Ubuntu
- Builds an iOS IPA payload (unsigned) on macOS
- Collects the artifacts and creates a GitHub Release with them attached
flutter analyze
flutter testComing soon
This project is open source and available under the MIT License.
Yadnesh Teli