flutter_code_view 0.0.5
flutter_code_view: ^0.0.5 copied to clipboard
A Flutter package for displaying and highlighting code snippets with syntax highlighting and customizable themes.
Flutter Code View #
A Flutter package for displaying and highlighting code snippets with syntax highlighting and customizable themes.
Features #
- Syntax Highlighting: Supports syntax highlighting for various programming languages.
- Customizable Themes: Choose from 90+ built-in themes to style your code snippets.
- Auto Detection: Automatically detect the programming language of the code snippet.
- Selectable and Copyable: Users can select and copy the code snippet easily with improved selection visibility.
- Line Numbers: Optional line numbers display for better code readability.
- Smart Selection Colors: Automatic selection color adjustment based on theme background for optimal contrast.
- Type-Safe: Full type safety with proper TypeScript-like type definitions.
Getting started #
To use this package, add flutter_code_view as a dependency in your pubspec.yaml file.
dependencies:
flutter_code_view: ^0.0.3
dependencies:
flutter_code_view:
git:
url: https://github.com/SwanFlutter/flutter_code_view.git
Usage #
- import the package in your Dart code:
import 'package:flutter_code_view/flutter_code_view.dart';
- Here is a simple example of how to use FlutterCodeView in your Flutter app:
import 'package:flutter/material.dart';
import 'package:flutter_code_view/flutter_code_view.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Code View Example'),
),
body: Center(
child: FlutterCodeView(
source: '''
List<AssetEntity> selectedAssetList = [];
ElevatedButton(
onPressed: () {
var picker = const CustomPicker(
maxCount: 5,
requestType: MyRequestType.image,
).instagram(context);
picker.then((value) {
selectedAssetList = value;
convertToFileList();
});
},
child: const Text("CustomPickers"),
),
''',
themeType: ThemeType.dark,
language: Languages.dart,
autoDetection: true,
height: 300,
width: MediaQuery.of(context).size.width * 0.35,
borderColor: Colors.grey.shade400,
// New features
showLineNumbers: true,
selectionColor: Colors.blue.withValues(alpha: 0.3),
),
),
),
);
}
}
Advanced Usage #
FlutterCodeView(
source: yourCodeString,
language: Languages.dart,
themeType: ThemeType.dracula,
// Display options
showLineNumbers: true,
fontSize: 14,
// Selection customization
selectionColor: Colors.amber.withValues(alpha: 0.3),
// Layout customization
width: 600,
height: 400,
padding: EdgeInsets.all(16),
borderRadius: BorderRadius.circular(12),
borderColor: Colors.grey.shade300,
// Line number styling
lineNumberStyle: TextStyle(
color: Colors.grey,
fontSize: 12,
),
)
Available Themes #
The package includes 90+ themes including:
monokaiSublime(default)draculagithubatomOneDarkvs2015nightOwlnordsolarizedDarksolarizedLight- And many more...
See ThemeType enum for the complete list.
API Reference #
FlutterCodeView Parameters #
| Parameter | Type | Default | Description |
|---|---|---|---|
source |
String |
required | The source code to display |
language |
Languages? |
Languages.dart |
Programming language for syntax highlighting. Set to null with autoDetection: true for auto-detection |
themeType |
ThemeType |
ThemeType.monokaiSublime |
Color theme for syntax highlighting |
autoDetection |
bool |
false |
Enable automatic language detection |
showLineNumbers |
bool |
false |
Display line numbers on the left side |
selectionColor |
Color? |
null |
Custom color for text selection (auto-calculated if null) |
fontSize |
double? |
16 |
Font size for the code text |
textStyle |
TextStyle? |
null |
Base text style (merged with theme styles) |
lineNumberStyle |
TextStyle? |
null |
Custom style for line numbers |
width |
double? |
null |
Width of the code view container |
height |
double? |
null |
Height of the code view container |
padding |
EdgeInsetsGeometry? |
EdgeInsets.all(8.0) |
Padding around the code |
borderColor |
Color |
Color(0xFFF5F5F5) |
Color of the outer border |
borderRadius |
BorderRadiusGeometry? |
null |
Border radius of outer container |
borderRadiusCodeView |
BorderRadiusGeometry? |
null |
Border radius of code view |
paddingBorder |
EdgeInsetsGeometry? |
null |
Padding inside the border |
tabSize |
int |
4 |
Number of spaces to replace tab characters |
Features in Detail #
Smart Text Selection #
The widget automatically calculates the best selection color based on the theme's background luminance, ensuring optimal contrast and readability on both light and dark themes.
Line Numbers #
When showLineNumbers: true, line numbers are displayed with automatic width calculation based on the total number of lines. The line numbers are styled to match the theme with reduced opacity.
Type Safety #
All themes and language definitions are fully typed with proper TypeScript-like type definitions, providing excellent IDE support and compile-time safety.
Contributors #
- flutter_highlight (Ongoing maintenance and updates)
- https://pub.dev/packages/flutter_highlight
- Rongjian Zhang(Original creator)