custom theme, fontsize

This commit is contained in:
randogoth 2025-02-21 17:46:41 +02:00
parent 78f47362cc
commit c574f456a0
5 changed files with 219 additions and 6 deletions

View file

@ -1,12 +1,13 @@
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 'themes/day.dart';
import 'themes/night.dart';
import 'themes/markdown.dart';
import 'dart:io';
class NoteEditorScreen extends StatefulWidget {
final File note;
final bool isDarkMode;
bool isDarkMode;
NoteEditorScreen({required this.note, required this.isDarkMode});
@ -16,6 +17,14 @@ class NoteEditorScreen extends StatefulWidget {
class _NoteEditorScreenState extends State<NoteEditorScreen> {
late CodeController _controller;
double _fontSize = 16.0; // Default font size
void _updateFontSize(double newSize) {
setState(() {
_fontSize = newSize;
});
}
@override
void initState() {
@ -51,19 +60,70 @@ class _NoteEditorScreenState extends State<NoteEditorScreen> {
return Scaffold(
appBar: AppBar(
title: Text(widget.note.uri.pathSegments.last.replaceAll('.md', '')),
actions: [
PopupMenuButton<String>(
icon: Icon(Icons.more_vert), // Menu button ()
onSelected: (String value) {
if (value == 'Toggle Theme') {
setState(() {
widget.isDarkMode = !widget.isDarkMode;
});
}
},
itemBuilder: (BuildContext context) => [
PopupMenuItem<String>(
value: 'Toggle Theme',
child: ListTile(
leading: Icon(
widget.isDarkMode ? Icons.light_mode : Icons.dark_mode,
),
title: Text(
widget.isDarkMode ? 'Switch to Light Mode' : 'Switch to Dark Mode',
),
),
),
PopupMenuItem<String>(
enabled: false,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Font Size'),
StatefulBuilder(
builder: (context, setState) {
return Slider(
value: _fontSize,
min: 12.0,
max: 24.0,
divisions: 6,
label: _fontSize.toString(),
onChanged: (newSize) {
setState(() {
_fontSize = newSize;
});
_updateFontSize(newSize);
},
);
},
),
],
),
),
],
),
],
),
body: _controller == null
? Center(child: CircularProgressIndicator())
: Padding(
padding: const EdgeInsets.all(16.0),
child: CodeTheme(
data: CodeThemeData(styles: monokaiSublimeTheme),
data: CodeThemeData(styles: widget.isDarkMode ? nightTheme : dayTheme),
child: CodeField(
gutterStyle: GutterStyle.none,
controller: _controller,
expands: true,
textStyle: TextStyle(
fontSize: 14.0,
fontSize: _fontSize,
),
),
),