signdoc 1.0.0 copy "signdoc: ^1.0.0" to clipboard
signdoc: ^1.0.0 copied to clipboard

A Flutter package for PDF viewing and signing with signature pad support.

example/lib/main.dart

import 'dart:io';

import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:open_filex/open_filex.dart';
import 'package:signdoc/sign_document_page.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(home: DocumentSigner());
  }
}

class DocumentSigner extends StatefulWidget {
  const DocumentSigner({super.key});

  @override
  State<DocumentSigner> createState() => _DocumentSignerState();
}

class _DocumentSignerState extends State<DocumentSigner> with SignatureResult {
  File? _selectedFile;

  Future<void> _pickFile() async {
    final result = await FilePicker.platform.pickFiles(
      type: FileType.custom,
      allowedExtensions: ['pdf', 'jpg', 'jpeg', 'png'],
    );

    if (result != null && result.files.single.path != null) {
      setState(() {
        _selectedFile = File(result.files.single.path!);
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    if (_selectedFile == null) {
      return Scaffold(
        appBar: AppBar(title: const Text("Pick a File")),
        body: Center(
          child: ElevatedButton(
            onPressed: _pickFile,
            child: const Text("Select PDF or Image"),
          ),
        ),
      );
    }

    return SignDocumentPage(
      file: _selectedFile!,
      onError: onSignatureFailed,
      onSignedDocument: onSignatureSucceed,
      onCancelled: onSignatureCancelled,
      uploadButtonMessage: "Save pdf",
    );
  }

  @override
  void onSignatureFailed(Exception message) {
    ScaffoldMessenger.of(
      context,
    ).showSnackBar(SnackBar(content: Text("Signature failed: $message")));
  }

  @override
  void onSignatureSucceed(File file) async {
    debugPrint("Signed file path: ${file.path}");

    ScaffoldMessenger.of(
      context,
    ).showSnackBar(SnackBar(content: Text("Signed file saved: ${file.path}")));

    // Open the signed file immediately
    await OpenFilex.open(file.path);
    _selectedFile = null;
    setState(() {});
  }

  @override
  void onSignatureCancelled(String message) {
    debugPrint(message);
    setState(() {
      _selectedFile = null;
    });
  }
}
5
likes
0
points
81
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for PDF viewing and signing with signature pad support.

Repository (GitHub)
View/report issues

Documentation

Documentation

License

unknown (license)

Dependencies

bloc, dio, flutter, flutter_bloc, flutter_pdfview, path, path_provider, syncfusion_flutter_pdf, syncfusion_flutter_signaturepad

More

Packages that depend on signdoc