Showing
11 changed files
with
58 additions
and
45 deletions
@@ -16,7 +16,6 @@ | @@ -16,7 +16,6 @@ | ||
16 | 16 | ||
17 | import 'dart:async'; | 17 | import 'dart:async'; |
18 | import 'dart:io'; | 18 | import 'dart:io'; |
19 | -import 'dart:typed_data'; | ||
20 | 19 | ||
21 | import 'package:flutter/foundation.dart'; | 20 | import 'package:flutter/foundation.dart'; |
22 | import 'package:flutter/material.dart'; | 21 | import 'package:flutter/material.dart'; |
@@ -25,26 +24,12 @@ import 'package:path_provider/path_provider.dart'; | @@ -25,26 +24,12 @@ import 'package:path_provider/path_provider.dart'; | ||
25 | import 'package:pdf/pdf.dart'; | 24 | import 'package:pdf/pdf.dart'; |
26 | import 'package:pdf/widgets.dart' as pw; | 25 | import 'package:pdf/widgets.dart' as pw; |
27 | import 'package:printing/printing.dart'; | 26 | import 'package:printing/printing.dart'; |
28 | -import 'package:printing_demo/certificate.dart'; | ||
29 | import 'package:url_launcher/url_launcher.dart' as ul; | 27 | import 'package:url_launcher/url_launcher.dart' as ul; |
30 | 28 | ||
31 | -import 'calendar.dart'; | ||
32 | import 'data.dart'; | 29 | import 'data.dart'; |
33 | -import 'document.dart'; | ||
34 | -import 'invoice.dart'; | ||
35 | -import 'report.dart'; | ||
36 | -import 'resume.dart'; | 30 | +import 'examples.dart'; |
37 | 31 | ||
38 | class MyApp extends StatefulWidget { | 32 | class MyApp extends StatefulWidget { |
39 | - static const examples = <Example>[ | ||
40 | - Example('RÉSUMÉ', 'resume.dart', generateResume), | ||
41 | - Example('DOCUMENT', 'document.dart', generateDocument), | ||
42 | - Example('INVOICE', 'invoice.dart', generateInvoice), | ||
43 | - Example('REPORT', 'report.dart', generateReport), | ||
44 | - Example('CALENDAR', 'calendar.dart', generateCalendar), | ||
45 | - Example('CERTIFICATE', 'certificate.dart', generateCertificate, true), | ||
46 | - ]; | ||
47 | - | ||
48 | @override | 33 | @override |
49 | MyAppState createState() { | 34 | MyAppState createState() { |
50 | return MyAppState(); | 35 | return MyAppState(); |
@@ -77,14 +62,15 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | @@ -77,14 +62,15 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | ||
77 | 62 | ||
78 | _tabController = TabController( | 63 | _tabController = TabController( |
79 | vsync: this, | 64 | vsync: this, |
80 | - length: MyApp.examples.length, | 65 | + length: examples.length, |
81 | initialIndex: _tab, | 66 | initialIndex: _tab, |
82 | ); | 67 | ); |
83 | _tabController!.addListener(() { | 68 | _tabController!.addListener(() { |
84 | setState(() { | 69 | setState(() { |
85 | _tab = _tabController!.index; | 70 | _tab = _tabController!.index; |
71 | + print('set state 1'); | ||
86 | }); | 72 | }); |
87 | - if (MyApp.examples[_tab].needsData && !_hasData && !_pending) { | 73 | + if (examples[_tab].needsData && !_hasData && !_pending) { |
88 | _pending = true; | 74 | _pending = true; |
89 | askName(context).then((value) { | 75 | askName(context).then((value) { |
90 | if (value != null) { | 76 | if (value != null) { |
@@ -100,6 +86,7 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | @@ -100,6 +86,7 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | ||
100 | 86 | ||
101 | setState(() { | 87 | setState(() { |
102 | printingInfo = info; | 88 | printingInfo = info; |
89 | + print('set state 2'); | ||
103 | }); | 90 | }); |
104 | } | 91 | } |
105 | 92 | ||
@@ -152,16 +139,16 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | @@ -152,16 +139,16 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | ||
152 | 139 | ||
153 | return Scaffold( | 140 | return Scaffold( |
154 | appBar: AppBar( | 141 | appBar: AppBar( |
155 | - title: const Text('Pdf Printing Example'), | 142 | + title: const Text('Flutter PDF Demo'), |
156 | bottom: TabBar( | 143 | bottom: TabBar( |
157 | controller: _tabController, | 144 | controller: _tabController, |
158 | - tabs: MyApp.examples.map<Tab>((e) => Tab(text: e.name)).toList(), | 145 | + tabs: examples.map<Tab>((e) => Tab(text: e.name)).toList(), |
159 | isScrollable: true, | 146 | isScrollable: true, |
160 | ), | 147 | ), |
161 | ), | 148 | ), |
162 | body: PdfPreview( | 149 | body: PdfPreview( |
163 | maxPageWidth: 700, | 150 | maxPageWidth: 700, |
164 | - build: (format) => MyApp.examples[_tab].builder(format, _data), | 151 | + build: (format) => examples[_tab].builder(format, _data), |
165 | actions: actions, | 152 | actions: actions, |
166 | onPrinted: _showPrintedToast, | 153 | onPrinted: _showPrintedToast, |
167 | onShared: _showSharedToast, | 154 | onShared: _showSharedToast, |
@@ -176,7 +163,7 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | @@ -176,7 +163,7 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | ||
176 | 163 | ||
177 | void _showSources() { | 164 | void _showSources() { |
178 | ul.launch( | 165 | ul.launch( |
179 | - 'https://github.com/DavBfr/dart_pdf/blob/master/demo/lib/${MyApp.examples[_tab].file}', | 166 | + 'https://github.com/DavBfr/dart_pdf/blob/master/demo/lib/examples/${examples[_tab].file}', |
180 | ); | 167 | ); |
181 | } | 168 | } |
182 | 169 | ||
@@ -208,18 +195,3 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | @@ -208,18 +195,3 @@ class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { | ||
208 | }); | 195 | }); |
209 | } | 196 | } |
210 | } | 197 | } |
211 | - | ||
212 | -typedef LayoutCallbackWithData = Future<Uint8List> Function( | ||
213 | - PdfPageFormat pageFormat, CustomData data); | ||
214 | - | ||
215 | -class Example { | ||
216 | - const Example(this.name, this.file, this.builder, [this.needsData = false]); | ||
217 | - | ||
218 | - final String name; | ||
219 | - | ||
220 | - final String file; | ||
221 | - | ||
222 | - final LayoutCallbackWithData builder; | ||
223 | - | ||
224 | - final bool needsData; | ||
225 | -} |
demo/lib/examples.dart
0 → 100644
1 | +import 'dart:async'; | ||
2 | +import 'dart:typed_data'; | ||
3 | + | ||
4 | +import 'package:pdf/pdf.dart'; | ||
5 | + | ||
6 | +import 'data.dart'; | ||
7 | +import 'examples/calendar.dart'; | ||
8 | +import 'examples/certificate.dart'; | ||
9 | +import 'examples/document.dart'; | ||
10 | +import 'examples/invoice.dart'; | ||
11 | +import 'examples/report.dart'; | ||
12 | +import 'examples/resume.dart'; | ||
13 | + | ||
14 | +const examples = <Example>[ | ||
15 | + Example('RÉSUMÉ', 'resume.dart', generateResume), | ||
16 | + Example('DOCUMENT', 'document.dart', generateDocument), | ||
17 | + Example('INVOICE', 'invoice.dart', generateInvoice), | ||
18 | + Example('REPORT', 'report.dart', generateReport), | ||
19 | + Example('CALENDAR', 'calendar.dart', generateCalendar), | ||
20 | + Example('CERTIFICATE', 'certificate.dart', generateCertificate, true), | ||
21 | +]; | ||
22 | + | ||
23 | +typedef LayoutCallbackWithData = Future<Uint8List> Function( | ||
24 | + PdfPageFormat pageFormat, CustomData data); | ||
25 | + | ||
26 | +class Example { | ||
27 | + const Example(this.name, this.file, this.builder, [this.needsData = false]); | ||
28 | + | ||
29 | + final String name; | ||
30 | + | ||
31 | + final String file; | ||
32 | + | ||
33 | + final LayoutCallbackWithData builder; | ||
34 | + | ||
35 | + final bool needsData; | ||
36 | +} |
@@ -21,7 +21,7 @@ import 'package:intl/intl.dart'; | @@ -21,7 +21,7 @@ import 'package:intl/intl.dart'; | ||
21 | import 'package:pdf/pdf.dart'; | 21 | import 'package:pdf/pdf.dart'; |
22 | import 'package:pdf/widgets.dart'; | 22 | import 'package:pdf/widgets.dart'; |
23 | 23 | ||
24 | -import 'data.dart'; | 24 | +import '../data.dart'; |
25 | 25 | ||
26 | class Calendar extends StatelessWidget { | 26 | class Calendar extends StatelessWidget { |
27 | Calendar({ | 27 | Calendar({ |
@@ -23,7 +23,7 @@ import 'package:pdf/pdf.dart'; | @@ -23,7 +23,7 @@ import 'package:pdf/pdf.dart'; | ||
23 | import 'package:pdf/widgets.dart' as pw; | 23 | import 'package:pdf/widgets.dart' as pw; |
24 | import 'package:vector_math/vector_math_64.dart'; | 24 | import 'package:vector_math/vector_math_64.dart'; |
25 | 25 | ||
26 | -import 'data.dart'; | 26 | +import '../data.dart'; |
27 | 27 | ||
28 | final _cache = <String, Uint8List>{}; | 28 | final _cache = <String, Uint8List>{}; |
29 | 29 |
@@ -19,7 +19,7 @@ import 'dart:typed_data'; | @@ -19,7 +19,7 @@ import 'dart:typed_data'; | ||
19 | import 'package:pdf/pdf.dart'; | 19 | import 'package:pdf/pdf.dart'; |
20 | import 'package:pdf/widgets.dart' as pw; | 20 | import 'package:pdf/widgets.dart' as pw; |
21 | 21 | ||
22 | -import 'data.dart'; | 22 | +import '../data.dart'; |
23 | 23 | ||
24 | Future<Uint8List> generateDocument( | 24 | Future<Uint8List> generateDocument( |
25 | PdfPageFormat format, CustomData data) async { | 25 | PdfPageFormat format, CustomData data) async { |
@@ -21,7 +21,7 @@ import 'package:intl/intl.dart'; | @@ -21,7 +21,7 @@ import 'package:intl/intl.dart'; | ||
21 | import 'package:pdf/pdf.dart'; | 21 | import 'package:pdf/pdf.dart'; |
22 | import 'package:pdf/widgets.dart' as pw; | 22 | import 'package:pdf/widgets.dart' as pw; |
23 | 23 | ||
24 | -import 'data.dart'; | 24 | +import '../data.dart'; |
25 | 25 | ||
26 | Future<Uint8List> generateInvoice( | 26 | Future<Uint8List> generateInvoice( |
27 | PdfPageFormat pageFormat, CustomData data) async { | 27 | PdfPageFormat pageFormat, CustomData data) async { |
@@ -21,7 +21,7 @@ import 'package:flutter/services.dart'; | @@ -21,7 +21,7 @@ import 'package:flutter/services.dart'; | ||
21 | import 'package:pdf/pdf.dart'; | 21 | import 'package:pdf/pdf.dart'; |
22 | import 'package:pdf/widgets.dart' as pw; | 22 | import 'package:pdf/widgets.dart' as pw; |
23 | 23 | ||
24 | -import 'data.dart'; | 24 | +import '../data.dart'; |
25 | 25 | ||
26 | Future<Uint8List> generateReport( | 26 | Future<Uint8List> generateReport( |
27 | PdfPageFormat pageFormat, CustomData data) async { | 27 | PdfPageFormat pageFormat, CustomData data) async { |
@@ -21,5 +21,10 @@ import 'app.dart'; | @@ -21,5 +21,10 @@ import 'app.dart'; | ||
21 | 21 | ||
22 | void main() { | 22 | void main() { |
23 | debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia; | 23 | debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia; |
24 | - runApp(MaterialApp(home: MyApp())); | 24 | + runApp( |
25 | + MaterialApp( | ||
26 | + title: 'Flutter PDF Demo', | ||
27 | + home: MyApp(), | ||
28 | + ), | ||
29 | + ); | ||
25 | } | 30 | } |
@@ -3,7 +3,7 @@ import 'dart:io'; | @@ -3,7 +3,7 @@ import 'dart:io'; | ||
3 | import 'package:flutter_test/flutter_test.dart'; | 3 | import 'package:flutter_test/flutter_test.dart'; |
4 | import 'package:pdf/pdf.dart'; | 4 | import 'package:pdf/pdf.dart'; |
5 | import 'package:printing_demo/data.dart'; | 5 | import 'package:printing_demo/data.dart'; |
6 | -import 'package:printing_demo/document.dart'; | 6 | +import 'package:printing_demo/examples/document.dart'; |
7 | 7 | ||
8 | void main() { | 8 | void main() { |
9 | testWidgets('Pdf Generate the document', (WidgetTester tester) async { | 9 | testWidgets('Pdf Generate the document', (WidgetTester tester) async { |
@@ -26,7 +26,7 @@ | @@ -26,7 +26,7 @@ | ||
26 | <!-- Favicon --> | 26 | <!-- Favicon --> |
27 | <link rel="icon" type="image/png" href="favicon.png"/> | 27 | <link rel="icon" type="image/png" href="favicon.png"/> |
28 | 28 | ||
29 | - <title>printing_demo</title> | 29 | + <title>Flutter PDF Demo</title> |
30 | <link rel="manifest" href="manifest.json"> | 30 | <link rel="manifest" href="manifest.json"> |
31 | </head> | 31 | </head> |
32 | <body> | 32 | <body> |
-
Please register or login to post a comment