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 { 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))), )), ); } }