Rich text editor for Flutter
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

78 lines
2.2 KiB

// ignore_for_file: avoid_redundant_argument_values
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_quill/extensions.dart';
import 'package:flutter_quill/flutter_quill.dart';
import 'package:flutter_quill_extensions/flutter_quill_extensions.dart';
import '../universal_ui/universal_ui.dart';
import '../widgets/demo_scaffold.dart';
class ReadOnlyPage extends StatefulWidget {
@override
_ReadOnlyPageState createState() => _ReadOnlyPageState();
}
class _ReadOnlyPageState extends State<ReadOnlyPage> {
final FocusNode _focusNode = FocusNode();
bool _edit = false;
@override
Widget build(BuildContext context) {
return DemoScaffold(
documentFilename: isDesktop()
? 'assets/sample_data_nomedia.json'
: 'sample_data_nomedia.json',
builder: _buildContent,
showToolbar: _edit == true,
floatingActionButton: FloatingActionButton.extended(
label: Text(_edit == true ? 'Done' : 'Edit'),
onPressed: _toggleEdit,
icon: Icon(_edit == true ? Icons.check : Icons.edit),
),
);
}
Widget _buildContent(BuildContext context, QuillController? controller) {
var quillEditor = QuillEditor(
configurations: QuillEditorConfigurations(
expands: false,
padding: EdgeInsets.zero,
embedBuilders: FlutterQuillEmbeds.editorBuilders(),
scrollable: true,
autoFocus: true,
),
scrollController: ScrollController(),
focusNode: _focusNode,
// readOnly: !_edit,
);
if (kIsWeb) {
quillEditor = QuillEditor(
configurations: QuillEditorConfigurations(
autoFocus: true,
expands: false,
padding: EdgeInsets.zero,
embedBuilders: defaultEmbedBuildersWeb,
scrollable: true,
),
scrollController: ScrollController(),
focusNode: _focusNode,
);
}
return Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.grey.shade200),
),
padding: const EdgeInsets.all(8),
child: quillEditor,
);
}
void _toggleEdit() {
setState(() {
_edit = !_edit;
});
}
}