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