PDF support

This commit is contained in:
Hillel Coren 2019-12-26 21:25:45 +02:00
parent 54098c251d
commit e1490c8aa1
5 changed files with 111 additions and 42 deletions

1
.gitignore vendored
View File

@ -75,6 +75,7 @@
#.android/ #.android/
#.ios/ #.ios/
lib/generated_plugin_registrant.dart
.flutter-plugins-dependencies .flutter-plugins-dependencies
.env.dart .env.dart
key.properties key.properties

View File

@ -3,6 +3,7 @@ import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
import 'package:invoiceninja_flutter/ui/app/debug/state_inspector.dart'; import 'package:invoiceninja_flutter/ui/app/debug/state_inspector.dart';
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart'; import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
import 'package:invoiceninja_flutter/ui/app/resources/cached_image.dart'; import 'package:invoiceninja_flutter/ui/app/resources/cached_image.dart';
import 'package:invoiceninja_flutter/utils/pdf.dart'; import 'package:invoiceninja_flutter/utils/pdf.dart';
@ -351,14 +352,16 @@ class SidebarFooter extends StatelessWidget {
return StateInspector(); return StateInspector();
}), }),
), ),
if (state.lastError.isNotEmpty) IconButton(
icon: Icon(Icons.filter),
onPressed: () => viewPdf(InvoiceEntity(), context),
),
if (state.lastError.isNotEmpty && !kReleaseMode)
IconButton( IconButton(
icon: Icon( icon: Icon(
Icons.warning, Icons.warning,
color: Colors.red, color: Colors.red,
), ),
onPressed: () => viewPdf(InvoiceEntity(), context),
/*
onPressed: () => showDialog<ErrorDialog>( onPressed: () => showDialog<ErrorDialog>(
context: context, context: context,
builder: (BuildContext context) { builder: (BuildContext context) {
@ -367,7 +370,6 @@ class SidebarFooter extends StatelessWidget {
clearErrorOnDismiss: true, clearErrorOnDismiss: true,
); );
}), }),
*/
), ),
/* /*
if (!Platform.isIOS && if (!Platform.isIOS &&
@ -439,14 +441,12 @@ class SidebarFooterCollapsed extends StatelessWidget {
} }
void _showAbout(BuildContext context) { void _showAbout(BuildContext context) {
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context);
final ThemeData themeData = Theme.of(context); final ThemeData themeData = Theme.of(context);
final TextStyle aboutTextStyle = themeData.textTheme.body2; final TextStyle aboutTextStyle = themeData.textTheme.body2;
final TextStyle linkStyle = final TextStyle linkStyle =
themeData.textTheme.body2.copyWith(color: themeData.accentColor); themeData.textTheme.body2.copyWith(color: themeData.accentColor);
showAboutDialog( showAboutDialog(
context: context, context: context,
applicationName: 'Invoice Ninja', applicationName: 'Invoice Ninja',

View File

@ -1,18 +1,15 @@
import 'dart:async'; import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/data/models/invoice_model.dart'; import 'package:invoiceninja_flutter/data/models/invoice_model.dart';
/*
import 'dart:io';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart'; import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:native_pdf_renderer/native_pdf_renderer.dart'; import 'package:native_pdf_renderer/native_pdf_renderer.dart';
*/
Future<Null> viewPdf(InvoiceEntity invoice, BuildContext context) async { Future<Null> viewPdf(InvoiceEntity invoice, BuildContext context) async {
/*
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context);
if (Platform.isIOS) { if (Platform.isIOS) {
if (await canLaunch(invoice.invitationBorderlessLink)) { if (await canLaunch(invoice.invitationBorderlessLink)) {
@ -98,11 +95,8 @@ Future<Null> viewPdf(InvoiceEntity invoice, BuildContext context) async {
), ),
); );
}); });
*/
} }
/*
Future<List<PDFPageImage>> renderPDF(String url) async { Future<List<PDFPageImage>> renderPDF(String url) async {
url = url =
//'https://staging.invoiceninja.com/download/gj5d2udwzowatfsjibarq4eyo4k0cvpd'; // one page //'https://staging.invoiceninja.com/download/gj5d2udwzowatfsjibarq4eyo4k0cvpd'; // one page
@ -123,4 +117,3 @@ Future<List<PDFPageImage>> renderPDF(String url) async {
return pages; return pages;
} }
*/

View File

@ -84,7 +84,7 @@ packages:
name: build_runner_core name: build_runner_core
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.2.0" version: "4.3.0"
built_collection: built_collection:
dependency: "direct main" dependency: "direct main"
description: description:
@ -190,6 +190,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.3" version: "1.3.3"
extension:
dependency: transitive
description:
name: extension
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.5"
faker: faker:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -204,6 +211,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.1.0" version: "5.1.0"
firebase:
dependency: transitive
description:
name: firebase
url: "https://pub.dartlang.org"
source: hosted
version: "7.1.0"
firebase_auth: firebase_auth:
dependency: "direct main" dependency: "direct main"
description: description:
@ -217,14 +231,21 @@ packages:
name: firebase_core name: firebase_core
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.2+1" version: "0.4.3+1"
firebase_core_platform_interface: firebase_core_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_platform_interface name: firebase_core_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.0.2"
firebase_core_web:
dependency: transitive
description:
name: firebase_core_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.1+1"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@ -301,6 +322,11 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.7.0" version: "1.7.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
font_awesome_flutter: font_awesome_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
@ -333,14 +359,21 @@ packages:
name: google_sign_in name: google_sign_in
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.14" version: "4.1.1"
google_sign_in_platform_interface: google_sign_in_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: google_sign_in_platform_interface name: google_sign_in_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.0.3"
google_sign_in_web:
dependency: transitive
description:
name: google_sign_in_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.2+1"
graphs: graphs:
dependency: transitive dependency: transitive
description: description:
@ -389,14 +422,14 @@ packages:
name: image_picker name: image_picker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.6.2+1" version: "0.6.2+3"
in_app_purchase: in_app_purchase:
dependency: "direct main" dependency: "direct main"
description: description:
name: in_app_purchase name: in_app_purchase
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.2+3" version: "0.2.2+4"
intl: intl:
dependency: "direct main" dependency: "direct main"
description: description:
@ -488,6 +521,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.2" version: "1.0.2"
native_pdf_renderer:
dependency: "direct main"
description:
name: native_pdf_renderer
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.1"
node_interop: node_interop:
dependency: transitive dependency: transitive
description: description:
@ -543,7 +583,7 @@ packages:
name: path_provider name: path_provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.4.5" version: "1.5.1"
pedantic: pedantic:
dependency: transitive dependency: transitive
description: description:
@ -565,6 +605,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.1" version: "2.2.1"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
pool: pool:
dependency: transitive dependency: transitive
description: description:
@ -641,21 +688,35 @@ packages:
name: share name: share
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.6.3+4" version: "0.6.3+5"
shared_preferences: shared_preferences:
dependency: "direct main" dependency: "direct main"
description: description:
name: shared_preferences name: shared_preferences
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.5.4+8" version: "0.5.6"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.1+3"
shared_preferences_platform_interface: shared_preferences_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_platform_interface name: shared_preferences_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.0.1"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.2+2"
shelf: shelf:
dependency: transitive dependency: transitive
description: description:
@ -723,7 +784,7 @@ packages:
name: sqflite name: sqflite
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.7+3" version: "1.2.0"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
@ -758,7 +819,7 @@ packages:
name: synchronized name: synchronized
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0+2" version: "2.1.1"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
@ -814,14 +875,28 @@ packages:
name: url_launcher name: url_launcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.2.7" version: "5.4.1"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.1+2"
url_launcher_platform_interface: url_launcher_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_platform_interface name: url_launcher_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.1" version: "1.0.5"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.0+2"
usage: usage:
dependency: transitive dependency: transitive
description: description:
@ -849,7 +924,7 @@ packages:
name: vm_service name: vm_service
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.3" version: "2.1.4"
vm_service_client: vm_service_client:
dependency: transitive dependency: transitive
description: description:
@ -877,7 +952,7 @@ packages:
name: webview_flutter name: webview_flutter
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.3.17" version: "0.3.18+1"
xml: xml:
dependency: transitive dependency: transitive
description: description:
@ -901,4 +976,4 @@ packages:
version: "0.8.0" version: "0.8.0"
sdks: sdks:
dart: ">=2.6.0 <3.0.0" dart: ">=2.6.0 <3.0.0"
flutter: ">=1.10.15-pre.148 <2.0.0" flutter: ">=1.12.13+hotfix.4 <2.0.0"

View File

@ -40,7 +40,7 @@ dependencies:
flutter_json_widget: ^1.0.2 flutter_json_widget: ^1.0.2
webview_flutter: ^0.3.15+1 webview_flutter: ^0.3.15+1
timeago: ^2.0.22 timeago: ^2.0.22
#native_pdf_renderer: any native_pdf_renderer: any
flutter_typeahead: ^1.7.0 flutter_typeahead: ^1.7.0
#quick_actions: ^0.2.1 #quick_actions: ^0.2.1