pixel_compressor 0.1.0 copy "pixel_compressor: ^0.1.0" to clipboard
pixel_compressor: ^0.1.0 copied to clipboard

Native image and video compression for Flutter — resizing, format conversion, thumbnails, metadata, and target-size compression. No FFmpeg.

example/lib/main.dart

import 'package:flutter/material.dart';

import 'pages/batch_page.dart';
import 'pages/cache_page.dart';
import 'pages/capabilities_page.dart';
import 'pages/image_page.dart';
import 'pages/merge_page.dart';
import 'pages/metadata_page.dart';
import 'pages/thumbnails_page.dart';
import 'pages/video_page.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'pixel_compressor demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
      home: const _HomeShell(),
    );
  }
}

class _Destination {
  const _Destination(this.label, this.icon, this.builder);

  final String label;
  final IconData icon;
  final WidgetBuilder builder;
}

class _HomeShell extends StatefulWidget {
  const _HomeShell();

  @override
  State<_HomeShell> createState() => _HomeShellState();
}

class _HomeShellState extends State<_HomeShell> {
  static final _destinations = [
    _Destination('Image', Icons.image_outlined, (_) => const ImagePage()),
    _Destination('Video', Icons.videocam_outlined, (_) => const VideoPage()),
    _Destination('Batch', Icons.collections_outlined, (_) => const BatchPage()),
    _Destination('Merge', Icons.merge_type, (_) => const MergePage()),
    _Destination(
      'Thumbnails',
      Icons.grid_view_outlined,
      (_) => const ThumbnailsPage(),
    ),
    _Destination('Metadata', Icons.info_outline, (_) => const MetadataPage()),
    _Destination('Capabilities', Icons.memory, (_) => const CapabilitiesPage()),
    _Destination('Cache', Icons.folder_outlined, (_) => const CachePage()),
  ];

  int _selected = 0;

  @override
  Widget build(BuildContext context) {
    final destination = _destinations[_selected];

    return Scaffold(
      appBar: AppBar(title: Text('pixel_compressor — ${destination.label}')),
      drawer: NavigationDrawer(
        selectedIndex: _selected,
        onDestinationSelected: (index) {
          setState(() => _selected = index);
          Navigator.of(context).pop();
        },
        children: [
          const Padding(
            padding: EdgeInsets.fromLTRB(28, 16, 16, 8),
            child: Text(
              'pixel_compressor',
              style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18),
            ),
          ),
          for (final d in _destinations)
            NavigationDrawerDestination(
              icon: Icon(d.icon),
              label: Text(d.label),
            ),
        ],
      ),
      body: destination.builder(context),
    );
  }
}
0
likes
160
points
47
downloads

Documentation

API reference

Publisher

verified publishertherivanta.com

Weekly Downloads

Native image and video compression for Flutter — resizing, format conversion, thumbnails, metadata, and target-size compression. No FFmpeg.

Repository (GitHub)
View/report issues

Topics

#image #video #compression #media #thumbnail

License

Apache-2.0 (license)

Dependencies

flutter, flutter_web_plugins, meta, plugin_platform_interface, web

More

Packages that depend on pixel_compressor

Packages that implement pixel_compressor