better screen space, syntax highligthing

This commit is contained in:
Álvaro González 2026-03-17 19:15:06 +01:00
parent d2bdf4a157
commit 26fc1bc519

View file

@ -5,6 +5,11 @@ import 'package:d4rt_formulas/corpus.dart';
import 'package:d4rt_formulas/ai/formula_editor.dart'; import 'package:d4rt_formulas/ai/formula_editor.dart';
import 'package:d4rt_formulas/services/import_service.dart'; import 'package:d4rt_formulas/services/import_service.dart';
import 'package:flutter_code_editor/flutter_code_editor.dart';
import 'package:flutter_highlight/themes/monokai-sublime.dart';
import 'package:highlight/languages/java.dart';
/// Screen to preview and import formula elements /// Screen to preview and import formula elements
class ImportPreviewScreen extends StatefulWidget { class ImportPreviewScreen extends StatefulWidget {
final List<FormulaElement> elements; final List<FormulaElement> elements;
@ -254,12 +259,15 @@ class ImportFromTextScreen extends StatefulWidget {
} }
class _ImportFromTextScreenState extends State<ImportFromTextScreen> { class _ImportFromTextScreenState extends State<ImportFromTextScreen> {
final TextEditingController _textController = TextEditingController(); final CodeController _codeController = CodeController(
language: dart,
text: "// Insert code here...",
);
bool _isLoading = false; bool _isLoading = false;
@override @override
void dispose() { void dispose() {
_textController.dispose(); _codeController.dispose();
super.dispose(); super.dispose();
} }
@ -269,7 +277,7 @@ class _ImportFromTextScreenState extends State<ImportFromTextScreen> {
try { try {
final clipboardData = await Clipboard.getData('text/plain'); final clipboardData = await Clipboard.getData('text/plain');
if (clipboardData?.text != null) { if (clipboardData?.text != null) {
_textController.text = clipboardData!.text!; _codeController.text = clipboardData!.text!;
} else { } else {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
const SnackBar( const SnackBar(
@ -291,7 +299,7 @@ class _ImportFromTextScreenState extends State<ImportFromTextScreen> {
} }
Future<void> _import() async { Future<void> _import() async {
final text = _textController.text.trim(); final text = _codeController.fullText;
if (text.isEmpty) { if (text.isEmpty) {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
const SnackBar( const SnackBar(
@ -343,17 +351,17 @@ class _ImportFromTextScreenState extends State<ImportFromTextScreen> {
), ),
body: Column( body: Column(
children: [ children: [
Padding( Expanded(
padding: const EdgeInsets.all(16.0), child: CodeTheme(
child: TextField( data: CodeThemeData(styles: monokaiSublimeTheme),
controller: _textController, child: Padding(
decoration: const InputDecoration( padding: const EdgeInsets.all(16.0),
labelText: 'Paste formula text here', child: SingleChildScrollView(
hintText: 'Paste formula array literal in d4rt format...', child: CodeField(
border: OutlineInputBorder(), controller: _codeController,
),
),
), ),
maxLines: null,
expands: false,
), ),
), ),
Padding( Padding(