You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansu_ui/example/lib/common/code_view.dart

41 lines
1.4 KiB

import 'package:flutter/material.dart';
import '../codeviewer/code_style.dart';
typedef CodeBuilder = TextSpan Function(BuildContext context);
class CodeView extends StatefulWidget {
final CodeBuilder text;
final String title;
CodeView({Key key, @required this.text, this.title = 'Code'})
: super(key: key);
@override
_CodeViewState createState() => _CodeViewState();
}
class _CodeViewState extends State<CodeView> {
TextStyle codeTheme = TextStyle(fontSize: 14);
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black87,
appBar: AppBar(title: Text(widget.title)),
body: SingleChildScrollView(
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
child: CodeStyle(
baseStyle: codeTheme.copyWith(color: Colors.white70),
numberStyle: codeTheme.copyWith(color: const Color(0xFFBD93F9)),
commentStyle: codeTheme.copyWith(color: const Color(0xFF808080)),
keywordStyle: codeTheme.copyWith(color: Colors.blue),
stringStyle: codeTheme.copyWith(color: Colors.green),
punctuationStyle: codeTheme.copyWith(color: Colors.teal),
classStyle: codeTheme.copyWith(color: Colors.yellow),
constantStyle: codeTheme.copyWith(color: Colors.pink),
child:
Builder(builder: (context) => Text.rich(widget.text(context))),
)),
);
}
}