| 1 | import 'package:flutter_riverpod/flutter_riverpod.dart'; |
| 2 | import 'package:syntax_highlight/syntax_highlight.dart'; |
| 3 | |
| 4 | const supportedHighlighterLanguages = { |
| 5 | 'css', |
| 6 | 'dart', |
| 7 | 'go', |
| 8 | 'html', |
| 9 | 'java', |
| 10 | 'javascript', |
| 11 | 'json', |
| 12 | 'kotlin', |
| 13 | 'python', |
| 14 | 'rust', |
| 15 | 'sql', |
| 16 | 'swift', |
| 17 | 'typescript', |
| 18 | 'yaml', |
| 19 | }; |
| 20 | |
| 21 | final highlighterThemesProvider = FutureProvider<HighlighterThemes>((ref) { |
| 22 | return HighlighterThemes.load(); |
| 23 | }); |
| 24 | |
| 25 | class HighlighterThemes { |
| 26 | final HighlighterTheme light; |
| 27 | final HighlighterTheme dark; |
| 28 | |
| 29 | HighlighterThemes({required this.light, required this.dark}); |
| 30 | |
| 31 | static Future<HighlighterThemes> load() async { |
| 32 | final light = await HighlighterTheme.loadLightTheme(); |
| 33 | final dark = await HighlighterTheme.loadDarkTheme(); |
| 34 | return HighlighterThemes(light: light, dark: dark); |
| 35 | } |
| 36 | } |
| 37 | |
| 38 | Future<void> initializeHighlighter() async { |
| 39 | await Highlighter.initialize(supportedHighlighterLanguages.toList()); |
| 40 | } |