@@ -4,7 +4,11 @@ import 'package:flutter/material.dart';
44import 'package:flutter_quill/flutter_quill.dart' ;
55import 'package:flutter_quill_extensions/flutter_quill_extensions.dart'
66 show FlutterQuillEmbeds, QuillSharedExtensionsConfigurations;
7+ import 'package:pdf/pdf.dart' ;
8+ import 'package:pdf/widgets.dart' as pw;
9+ import 'package:printing/printing.dart' ;
710import 'package:quill_html_converter/quill_html_converter.dart' ;
11+ import 'package:quill_pdf_converter/quill_pdf_converter.dart' ;
812import 'package:share_plus/share_plus.dart' show Share;
913
1014import '../../extensions/scaffold_messenger.dart' ;
@@ -71,14 +75,50 @@ class _QuillScreenState extends State<QuillScreen> {
7175 appBar: AppBar (
7276 title: const Text ('Flutter Quill' ),
7377 actions: [
74- IconButton (
75- tooltip: 'Load with HTML' ,
76- onPressed: () {
77- final html = _controller.document.toDelta ().toHtml ();
78- _controller.document =
79- Document .fromDelta (Document .fromHtml (html));
78+ MenuAnchor (
79+ builder: (context, controller, child) {
80+ return IconButton (
81+ onPressed: () {
82+ if (controller.isOpen) {
83+ controller.close ();
84+ return ;
85+ }
86+ controller.open ();
87+ },
88+ icon: const Icon (
89+ Icons .more_vert,
90+ ),
91+ );
8092 },
81- icon: const Icon (Icons .html),
93+ menuChildren: [
94+ MenuItemButton (
95+ onPressed: () {
96+ final html = _controller.document.toDelta ().toHtml ();
97+ _controller.document =
98+ Document .fromDelta (Document .fromHtml (html));
99+ },
100+ child: const Text ('Load with HTML' ),
101+ ),
102+ MenuItemButton (
103+ onPressed: () async {
104+ final pdfDocument = pw.Document ();
105+ final pdfWidgets =
106+ await _controller.document.toDelta ().toPdf ();
107+ pdfDocument.addPage (
108+ pw.MultiPage (
109+ maxPages: 200 ,
110+ pageFormat: PdfPageFormat .a4,
111+ build: (context) {
112+ return pdfWidgets;
113+ },
114+ ),
115+ );
116+ await Printing .layoutPdf (
117+ onLayout: (format) async => pdfDocument.save ());
118+ },
119+ child: const Text ('Print as PDF' ),
120+ ),
121+ ],
82122 ),
83123 IconButton (
84124 tooltip: 'Share' ,
0 commit comments