Skip to content

Instantly share code, notes, and snippets.

View tirth-aubergine's full-sized avatar
🎯
Focusing

Tirth Patel tirth-aubergine

🎯
Focusing
View GitHub Profile
@tirth-aubergine
tirth-aubergine / pubspec.yaml
Created December 5, 2019 06:10
pubspec.yaml
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
spreadsheet_decoder: # parsing xlsx files
path_provider: # reading/writing files in application document directory
file_picker: # using local files from device
pdf_viewer_plugin: # viewing pdf files
pdf: # generating pdf file
permission_handler: # handling runtime permissions
@tirth-aubergine
tirth-aubergine / home.dart
Created December 5, 2019 07:12
HomeScreen - FAB
FloatingActionButton(
onPressed: () async {
homeProvider.xlsxFilePath = await FilePicker.getFilePath(
type: FileType.CUSTOM,
fileExtension: 'xlsx',
);
},
child: Icon(Icons.attach_file),
)
@tirth-aubergine
tirth-aubergine / home.dart
Last active December 5, 2019 08:34
HomeScreen - Body Initial
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:spreadsheet_decoder/spreadsheet_decoder.dart';
import 'package:file_picker/file_picker.dart';
import 'package:certificate_generator/providers/home.dart';
@tirth-aubergine
tirth-aubergine / home.dart
Last active December 6, 2019 07:30
HomeProvider
import 'package:flutter/foundation.dart';
///
/// Manages state for screens/HomeScreen.dart
///
class HomeProvider with ChangeNotifier {
// holds the path of selected xlsx file path
String _xlsxFilePath;
// holds the names of tables of selected xlsx file path
@tirth-aubergine
tirth-aubergine / home.dart
Last active December 6, 2019 08:21
HomeScreen - List
ListView(
padding: EdgeInsets.all(16),
children: <Widget>[
...SpreadsheetDecoder.decodeBytes(
File(homeProvider.xlsxFilePath).readAsBytesSync())
.tables[homeProvider.xlsxFileSelectedTable]
.rows
.map(
(value) => Column(
children: <Widget>[
@tirth-aubergine
tirth-aubergine / view.dart
Created December 5, 2019 08:38
ViewerScreen
import 'package:flutter/material.dart';
import 'package:pdf_viewer_plugin/pdf_viewer_plugin.dart';
class ViewerScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
Map<String, dynamic> view = ModalRoute.of(context).settings.arguments;
return Scaffold(
appBar: AppBar(
@tirth-aubergine
tirth-aubergine / result.dart
Last active December 6, 2019 07:26
ResultScreen - Initial
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:share_extend/share_extend.dart';
import 'package:certificate_generator/utils/commons.dart';
class ResultScreen extends StatelessWidget {
@override
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:certificate_generator/providers/home.dart';
import 'package:certificate_generator/screens/home.dart';
import 'package:certificate_generator/screens/result.dart';
import 'package:certificate_generator/screens/viewer.dart';
@tirth-aubergine
tirth-aubergine / result.dart
Created December 5, 2019 09:40
ResultScreen - Initial
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
FlatButton(
onPressed: () {
// Download
},
child: Icon(Icons.file_download),
),
FlatButton(
@tirth-aubergine
tirth-aubergine / result.dart
Last active December 6, 2019 07:21
ResultScreen - Download
FlatButton(
onPressed: () {
pdfGenerator(name);
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text('$name.pdf downloaded'),
action: SnackBarAction(
label: 'View',
onPressed: () async {
String downloadPath =