file_preview_kit 0.0.3 copy "file_preview_kit: ^0.0.3" to clipboard
file_preview_kit: ^0.0.3 copied to clipboard

Flutter widgets and parsers for readable XLSX, CSV, and DOCX previews.

example/lib/main.dart

import 'dart:typed_data';

import 'package:file_picker/file_picker.dart';
import 'package:file_preview_kit/file_preview_kit.dart';
import 'package:flutter/material.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'File Preview Kit Example',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(
          seedColor: Colors.black,
          dynamicSchemeVariant: DynamicSchemeVariant.monochrome,
        ),
        useMaterial3: true,
      ),
      home: const ExcelPreviewExamplePage(),
    );
  }
}

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

  @override
  State<ExcelPreviewExamplePage> createState() =>
      _ExcelPreviewExamplePageState();
}

class _ExcelPreviewExamplePageState extends State<ExcelPreviewExamplePage> {
  Uint8List? _bytes;
  String? _fileName;

  Future<void> _pickFile() async {
    final result = await FilePicker.pickFiles(
      type: FileType.custom,
      allowedExtensions: ['xlsx', 'csv', 'docx'],
      withData: true,
    );

    if (result == null || result.files.isEmpty) {
      return;
    }

    final file = result.files.single;

    if (file.bytes == null) {
      return;
    }

    setState(() {
      _bytes = file.bytes;
      _fileName = file.name;
    });
  }

  @override
  Widget build(BuildContext context) {
    final bytes = _bytes;
    final fileName = _fileName;

    return Scaffold(
      appBar: AppBar(
        title: const Text('File Preview'),
        actions: [
          IconButton(
            onPressed: _pickFile,
            icon: const Icon(Icons.folder_open),
            tooltip: 'Open file',
          ),
        ],
      ),
      body: bytes == null
          ? Center(
              child: ElevatedButton.icon(
                onPressed: _pickFile,
                icon: const Icon(Icons.folder_open),
                label: const Text('Choose XLSX, CSV, or DOCX file'),
              ),
            )
          : FilePreviewView(
              source: PreviewSource.bytes(bytes, fileName: fileName),
            ),
    );
  }
}
2
likes
0
points
70
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter widgets and parsers for readable XLSX, CSV, and DOCX previews.

Repository (GitHub)
View/report issues

Topics

#flutter #file-preview #xlsx #csv #docx

License

unknown (license)

Dependencies

archive, csv, flutter, xml

More

Packages that depend on file_preview_kit