HyperRender Highlight
Syntax highlighting plugin for HyperRender using flutter_highlight.
Features
- 180+ Languages - Comprehensive language support via highlight.js
- Multiple Themes - VS2015, Atom One Dark, GitHub, Dracula, and more
- Auto-detection - Automatic language detection when not specified
- Seamless Integration - Works with HyperRender's code block rendering
Installation
dependencies:
hyper_render_core: ^1.0.0
hyper_render_highlight: ^1.0.0
Usage
Basic Usage
import 'package:hyper_render_core/hyper_render_core.dart';
import 'package:hyper_render_html/hyper_render_html.dart';
import 'package:hyper_render_highlight/hyper_render_highlight.dart';
// Create highlighter
final highlighter = FlutterHighlightCodeHighlighter();
// Parse HTML with code blocks
final parser = HtmlContentParser();
final document = parser.parse('''
<pre><code class="language-dart">
void main() {
print('Hello, World!');
}
</code></pre>
''');
// Render with syntax highlighting
HyperRenderWidget(
document: document,
codeHighlighter: highlighter,
)
Custom Theme
final highlighter = FlutterHighlightCodeHighlighter(
theme: HighlightTheme.dracula,
);
Available Themes
| Theme | Description |
|---|---|
HighlightTheme.vs2015 |
Visual Studio 2015 dark (default) |
HighlightTheme.atomOneDark |
Atom One Dark |
HighlightTheme.atomOneLight |
Atom One Light |
HighlightTheme.github |
GitHub light theme |
HighlightTheme.githubDark |
GitHub dark theme |
HighlightTheme.monokaiSublime |
Monokai Sublime |
HighlightTheme.dracula |
Dracula dark theme |
HighlightTheme.nord |
Nord theme |
HighlightTheme.solarizedDark |
Solarized Dark |
HighlightTheme.solarizedLight |
Solarized Light |
With Markdown
import 'package:hyper_render_markdown/hyper_render_markdown.dart';
import 'package:hyper_render_highlight/hyper_render_highlight.dart';
final parser = MarkdownContentParser();
final highlighter = FlutterHighlightCodeHighlighter(
theme: HighlightTheme.atomOneDark,
);
final document = parser.parse('''
# Code Example
```python
def hello():
print("Hello, World!")
hello()
''');
HyperRenderWidget( document: document, codeHighlighter: highlighter, )
## Supported Languages
The plugin supports 180+ programming languages including:
### Popular Languages
- **Web**: JavaScript, TypeScript, HTML, CSS, JSON
- **Mobile**: Dart, Swift, Kotlin, Java, Objective-C
- **Backend**: Python, Ruby, PHP, Go, Rust, C#
- **Systems**: C, C++, Rust, Assembly
- **Data**: SQL, R, Julia, MATLAB
- **Shell**: Bash, PowerShell, Zsh
- **Config**: YAML, TOML, INI, XML
### Full List
Check `highlighter.supportedLanguages` for the complete list:
```dart
final highlighter = FlutterHighlightCodeHighlighter();
print(highlighter.supportedLanguages);
// {dart, javascript, python, ruby, go, rust, ...}
Custom Highlighter
You can implement your own highlighter using the CodeHighlighter interface:
import 'package:hyper_render_core/hyper_render_core.dart';
class MyCustomHighlighter implements CodeHighlighter {
@override
List<TextSpan> highlight(String code, String language) {
// Your custom highlighting logic
return [TextSpan(text: code)];
}
@override
Set<String> get supportedLanguages => {'dart', 'python'};
@override
bool isLanguageSupported(String language) {
return supportedLanguages.contains(language.toLowerCase());
}
@override
TextStyle get defaultStyle => TextStyle(
fontFamily: 'JetBrains Mono',
fontSize: 14,
);
@override
Color get backgroundColor => Color(0xFF1E1E1E);
}
License
MIT License - see LICENSE file for details.
Libraries
- hyper_render_highlight
- HyperRender Highlight - Syntax Highlighting Plugin