flutter_image_splitter 0.2.1 copy "flutter_image_splitter: ^0.2.1" to clipboard
flutter_image_splitter: ^0.2.1 copied to clipboard

Splits tall Flutter images into chunks via platform-native bitmap decoders, bypassing the GPU texture height limit that causes image distortion.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_image_splitter/flutter_image_splitter.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Image Splitter Example')),
        body: const ImageSplitDemo(),
      ),
    );
  }
}

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

  @override
  State<ImageSplitDemo> createState() => _ImageSplitDemoState();
}

class _ImageSplitDemoState extends State<ImageSplitDemo> {
  final _splitter = ImageSplitter();
  final _urlController = TextEditingController();

  SplitOutcome? _outcome;
  bool _loading = false;
  String? _error;

  @override
  void dispose() {
    _splitter.dispose();
    _urlController.dispose();
    super.dispose();
  }

  Future<void> _split() async {
    final url = _urlController.text.trim();
    if (url.isEmpty) return;

    setState(() {
      _loading = true;
      _error = null;
      _outcome = null;
    });

    try {
      final outcome = await _splitter.split(url);
      setState(() {
        _outcome = outcome;
        _loading = false;
      });
    } on PlatformException catch (e) {
      setState(() {
        _error = '${e.code}: ${e.message}';
        _loading = false;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Padding(
          padding: const EdgeInsets.all(16),
          child: Row(
            children: [
              Expanded(
                child: TextField(
                  controller: _urlController,
                  decoration: const InputDecoration(
                    hintText: 'Enter image URL',
                    border: OutlineInputBorder(),
                  ),
                ),
              ),
              const SizedBox(width: 8),
              ElevatedButton(
                onPressed: _loading ? null : _split,
                child: const Text('Split'),
              ),
            ],
          ),
        ),
        if (_loading) const CircularProgressIndicator.adaptive(),
        if (_error != null)
          Padding(
            padding: const EdgeInsets.all(16),
            child: Text(_error!, style: const TextStyle(color: Colors.red)),
          ),
        if (_outcome != null)
          Expanded(
            child: SplitImageView.scrollable(outcome: _outcome!),
          ),
      ],
    );
  }
}
1
likes
150
points
139
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Splits tall Flutter images into chunks via platform-native bitmap decoders, bypassing the GPU texture height limit that causes image distortion.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, meta

More

Packages that depend on flutter_image_splitter

Packages that implement flutter_image_splitter