custom theme, fontsize
This commit is contained in:
parent
78f47362cc
commit
c574f456a0
5 changed files with 219 additions and 6 deletions
|
|
@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue