import 'package:flutter/material.dart'; import 'package:flutter_code_editor/flutter_code_editor.dart'; import 'package:flutter_highlight/themes/monokai-sublime.dart'; import 'package:highlight/languages/markdown.dart'; import 'dart:io'; class NoteEditorScreen extends StatefulWidget { final File note; final bool isDarkMode; NoteEditorScreen({required this.note, required this.isDarkMode}); @override _NoteEditorScreenState createState() => _NoteEditorScreenState(); } class _NoteEditorScreenState extends State { late CodeController _controller; @override void initState() { super.initState(); _loadNoteContent(); } Future _loadNoteContent() async { final content = await widget.note.readAsString(); setState(() { _controller = CodeController( text: content, language: markdown, ); _controller.addListener(_saveNote); _controller.popupController.enabled = false; }); } Future _saveNote() async { await widget.note.writeAsString(_controller.text); } @override void dispose() { _controller.removeListener(_saveNote); _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.note.uri.pathSegments.last.replaceAll('.md', '')), ), body: _controller == null ? Center(child: CircularProgressIndicator()) : Padding( padding: const EdgeInsets.all(16.0), child: CodeTheme( data: CodeThemeData(styles: monokaiSublimeTheme), child: CodeField( gutterStyle: GutterStyle.none, controller: _controller, expands: true, textStyle: TextStyle( fontSize: 14.0, ), ), ), ), ); } }