Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
chore: create and preview pdf
  • Loading branch information
javico2609 committed Jun 6, 2019
1 parent 43fdc85 commit 9cc5070
Show file tree
Hide file tree
Showing 7 changed files with 105 additions and 0 deletions.
3 changes: 3 additions & 0 deletions lib/configs/routes.dart
Expand Up @@ -8,6 +8,7 @@ import 'package:playground_flutter/pages/code_examples/firebase_crud/firebase_cr
import 'package:playground_flutter/pages/code_examples/mapbox/mapbox.dart';
import 'package:playground_flutter/pages/code_examples/navigation-bars/3d_bottom_navigation_bar.dart';
import 'package:playground_flutter/pages/code_examples/navigation-bars/bottom_with_float_button.dart';
import 'package:playground_flutter/pages/code_examples/pdf_and_csv/pdf.dart';
import 'package:playground_flutter/pages/code_examples/progress-button/progress-button.dart';
import 'package:playground_flutter/pages/code_examples/redux/preview_question.dart';
import 'package:playground_flutter/pages/code_examples/redux/redux_flutter.dart';
Expand Down Expand Up @@ -79,6 +80,8 @@ Route generateRoutes(RouteSettings settings) {
return buildRoute(settings, SqliteDemo());
case NavigationConstrants.FirebaseDemo:
return buildRoute(settings, FirebaseDemo());
case NavigationConstrants.PdfGeneratorDemo:
return buildRoute(settings, PdfGeneratorDemo());

// TODO: notification section
case NavigationConstrants.NOTIFICATION_SUCCESS:
Expand Down
1 change: 1 addition & 0 deletions lib/constants/navigation.dart
Expand Up @@ -34,4 +34,5 @@ class NavigationConstrants {
static const String MapBoxDemo = "/MapBoxDemo";
static const String SqliteDemo = "/SqliteDemo";
static const String FirebaseDemo = "/FirebaseDemo";
static const String PdfGeneratorDemo = "/PdfGeneratorDemo";
}
7 changes: 7 additions & 0 deletions lib/data/sidemenu.dart
Expand Up @@ -149,4 +149,11 @@ List<MenuModel> menu = [
type: MenuItemType.CODE,
isRoot: false,
),
new MenuModel(
title: 'PDF create and view',
icon: Icons.picture_as_pdf,
route: NavigationConstrants.PdfGeneratorDemo,
type: MenuItemType.CODE,
isRoot: false,
),
];
77 changes: 77 additions & 0 deletions lib/pages/code_examples/pdf_and_csv/pdf.dart
@@ -0,0 +1,77 @@
import 'dart:io';
import 'package:pdf/widgets.dart' as pdfLib;
import 'package:path_provider/path_provider.dart';
import 'package:flutter/material.dart';
import 'package:playground_flutter/configs/ioc.dart';
import 'package:playground_flutter/models/baseball.model.dart';
import 'package:playground_flutter/pages/code_examples/pdf_and_csv/pdf_viewer.dart';
import 'package:playground_flutter/services/sqlite_basebal_team.service.dart';
import 'package:playground_flutter/shared/widgets/crud_demo_list_item.widget.dart';

class PdfGeneratorDemo extends StatelessWidget {
SqliteBaseballService _databaseService = Ioc.get<SqliteBaseballService>();

PdfGeneratorDemo({Key key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Pdf - generate and view'),
actions: <Widget>[
IconButton(
icon: Icon(Icons.picture_as_pdf),
onPressed: () => _generatePdfAndView(context),
),
SizedBox(width: 10),
],
),
body: StreamBuilder(
stream: _databaseService.list(),
builder: (_, AsyncSnapshot<List<BaseballModel>> snapshot) {
if (!snapshot.hasData) {
return Center(
child: Text("No data found !!!"),
);
}

return ListView(
children: snapshot.data.map((item) {
return CrudDemoListItem(
item: item,
onPressedDelete: (item) {},
onPressedEdit: (item) {},
);
}).toList(),
);
}),
);
}

_generatePdfAndView(context) async {
List<BaseballModel> data = await _databaseService.list().first;
final pdfLib.Document pdf = pdfLib.Document(deflate: zlib.encode);

pdf.addPage(
pdfLib.MultiPage(
build: (context) => [
pdfLib.Table.fromTextArray(context: context, data: <List<String>>[
<String>['Name', 'Coach', 'players'],
...data.map(
(item) => [item.name, item.coach, item.players.toString()])
]),
],
),
);

final String dir = (await getApplicationDocumentsDirectory()).path;
final String path = '$dir/baseball_teams.pdf';
final File file = File(path);
file.writeAsBytesSync(pdf.save());
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => PdfViewerPage(path: path),
),
);
}
}
14 changes: 14 additions & 0 deletions lib/pages/code_examples/pdf_and_csv/pdf_viewer.dart
@@ -0,0 +1,14 @@
import 'package:flutter/material.dart';
import 'package:flutter_full_pdf_viewer/full_pdf_viewer_scaffold.dart';

class PdfViewerPage extends StatelessWidget {
final String path;
const PdfViewerPage({Key key, this.path}) : super(key: key);

@override
Widget build(BuildContext context) {
return PDFViewerScaffold(
path: path,
);
}
}
3 changes: 3 additions & 0 deletions pubspec.yaml
Expand Up @@ -36,6 +36,9 @@ dependencies:
sqflite: ^1.1.0
json_annotation: ^2.4.0
cloud_firestore:
pdf: ^1.3.10
flutter_full_pdf_viewer: ^1.0.4
path_provider:

dev_dependencies:
build_runner: ^1.0.0
Expand Down
Binary file added ss20.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9cc5070

Please sign in to comment.