Custom widget to preview PDF 👁️

It is a custom widget to preview any pdf

// Automatic FlutterFlow imports
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/widgets/index.dart'; // Imports other custom widgets
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom widget code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!

import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
import 'package:file_picker/file_picker.dart';
import 'dart:io';

class Finalpdf1 extends StatefulWidget {
  const Finalpdf1({
    Key? key,
    this.width,
    this.height,
  }) : super(key: key);

  final double? width;
  final double? height;

  @override
  _Finalpdf1State createState() => _Finalpdf1State();
}

class _Finalpdf1State extends State<Finalpdf1> {
  String? ruta; // atributo para guardar la ruta del archivo PDF

  @override
  Widget build(BuildContext context) {
    return Container(
      width: widget.width,
      height: widget.height,
      child: Column(
        children: [
          ElevatedButton(
            onPressed: () async {
              // usa este botón para abrir la ventana de diálogo
              FilePickerResult? result = await FilePicker.platform.pickFiles(
                type: FileType
                    .custom, // especifica el tipo de archivo que quieres seleccionar
                allowedExtensions: [
                  'pdf'
                ], // especifica las extensiones permitidas
              );
              if (result != null) {
                // si el usuario seleccionó un archivo, guarda la ruta en el atributo
                ruta = result.files.single.path;
                setState(() {}); // actualiza el estado del widget
              }
            },
            child: Text('Seleccionar PDF'),
          ),
          Expanded(
            child: ruta == null // comprueba si el valor es nulo
                ? Text(
                    'No se ha seleccionado ningún PDF') // muestra un mensaje de error
                : SfPdfViewer.file(
                    // usa este widget para mostrar el PDF desde un archivo
                    File(
                        ruta!), // usa el operador ! para indicar que el valor no es nulo
                  ),
          ),
        ],
      ),
    );
  }
}
6
5 replies