Flutter代码高亮显示插件flutter_highlight2的使用
Flutter代码高亮显示插件flutter_highlight2的使用

这是一个基于下面示例代码实现的效果,并不是直接运行该示例代码的结果。
此插件是flutter_highlight的一个分支,增加了行号功能。
使用方法
import 'package:flutter/material.dart';
import 'package:flutter_highlight/flutter_highlight.dart';
import 'package:flutter_highlight/themes/github.dart';
class MyWidget extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
var code = '''main() {
print("Hello, World!");
}
''';
return HighlightView(
// 要高亮显示的原始代码
code,
// 指定语言
// 为了提高性能建议指定语言
language: 'dart',
// 指定高亮主题
// 可用的主题列表在`themes`文件夹内
theme: githubTheme,
// 指定填充
padding: EdgeInsets.all(12),
// 指定文本样式
textStyle: TextStyle(
fontFamily: 'My awesome monospace font',
fontSize: 16,
),
// 启用行号
lineNumbers: true,
// 行号容器边框
lineNumbersBorder: Border.all(color: Colors.grey, width: 0),
// 行号容器圆角
lineNumbersRadius: const BorderRadius.only(
bottomLeft: Radius.circular(15),
topLeft: Radius.circular(15)),
);
}
}
完整示例代码
import 'package:flutter/material.dart';
import 'package:flutter_highlight/flutter_highlight.dart';
import 'package:flutter_highlight/theme_map.dart';
import 'package:url_launcher/url_launcher.dart';
import 'example_map.dart';
void main() => runApp(MyApp());
final title = 'Flutter Highlight Gallery';
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: title,
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String language = 'dart';
String theme = 'a11y-dark';
Widget _buildMenuContent(String text) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 12),
child: Row(children: [
Text(text, style: TextStyle(fontSize: 16)),
Icon(Icons.arrow_drop_down)
]),
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(title),
actions: [
PopupMenuButton(
child: _buildMenuContent(language),
itemBuilder: (context) {
return exampleMap.keys.map((key) {
return CheckedPopupMenuItem(
value: key,
child: Text(key),
checked: language == key,
);
}).toList();
},
onSelected: (selected) {
if (selected != null) {
setState(() {
language = selected;
});
}
},
),
PopupMenuButton<String>(
child: _buildMenuContent(theme),
itemBuilder: (context) {
return themeMap.keys.map((key) {
return CheckedPopupMenuItem(
value: key,
child: Text(key),
checked: theme == key,
);
}).toList();
},
onSelected: (selected) {
if (selected != null) {
setState(() {
theme = selected;
});
}
},
),
IconButton(
icon: const Icon(Icons.code),
tooltip: 'Source Code',
onPressed: () {
launch('https://github.com/pd4d10/highlight');
},
)
],
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
HighlightView(
exampleMap[language],
language: language,
theme: themeMap[theme],
padding: EdgeInsets.all(12),
textStyle: TextStyle(
fontFamily:
'SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace'),
)
],
),
),
);
}
}
更多关于Flutter代码高亮显示插件flutter_highlight2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter代码高亮显示插件flutter_highlight2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_highlight2
是一个用于在 Flutter 应用中实现代码高亮显示的插件。它是基于 highlight.js
的,支持多种编程语言的语法高亮。
安装
首先,在 pubspec.yaml
文件中添加依赖:
dependencies:
flutter:
sdk: flutter
flutter_highlight: ^2.0.0
然后运行 flutter pub get
来安装依赖。
基本使用
以下是一个简单的示例,展示如何使用 flutter_highlight
来高亮显示代码。
import 'package:flutter/material.dart';
import 'package:flutter_highlight/flutter_highlight.dart';
import 'package:flutter_highlight/themes/github.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Code Highlight Example')),
body: CodeHighlightExample(),
),
);
}
}
class CodeHighlightExample extends StatelessWidget {
final String code = '''
void main() {
print('Hello, World!');
}
''';
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: HighlightView(
code,
language: 'dart',
theme: githubTheme,
padding: EdgeInsets.all(16),
textStyle: TextStyle(fontFamily: 'monospace', fontSize: 14),
),
);
}
}
说明
HighlightView
是一个用于显示代码高亮的组件。language
参数指定代码的语言(如dart
,java
,python
等)。theme
参数指定代码高亮的主题(如githubTheme
)。textStyle
可以设置代码的字体和大小。
其他主题
flutter_highlight
提供了多种主题,你可以通过导入不同的主题来改变代码高亮的样式。例如:
import 'package:flutter_highlight/themes/darcula.dart';
然后在 HighlightView
中使用该主题:
theme: darculaTheme,