media_library 0.0.1 copy "media_library: ^0.0.1" to clipboard
media_library: ^0.0.1 copied to clipboard

Easy, flexible API for querying the media library on a device.

example/lib/main.dart

import 'dart:async';
import 'dart:io' show Platform;
import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:media_library/media_library.dart';

void main() => runApp(App());

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Media Library example app'),
        ),
        body: Center(
          child: const FirstImageResult(),
        ),
      ),
    );
  }
}

class FirstImageResult extends StatefulWidget {
  const FirstImageResult();

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

class _FirstImageResultState extends State<FirstImageResult> {
  String _queryResult = 'Loading...';
  ImageMedia _image;

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    var handler = PermissionHandler();
    var group = Platform.isIOS ? PermissionGroup.photos : PermissionGroup.storage;
    var status = await handler.checkPermissionStatus(group);
    if (status != PermissionStatus.granted) {
      status = (await handler.requestPermissions([group]))[group];
    }
    
    if (status == PermissionStatus.granted) {
      await _getFirstImage();
    }
    else {
      _update('Could not get permission to list images');
    }
  }

  Future<void> _getFirstImage() async {
    try {
      final first = (await MediaLibrary.images().get()).first;
      final result = first == null ? 'No images found' : "First image: ${first.id}";
      _update(result, first);
    } on PlatformException {
      _update('Unable to load images');
    }
  }

  void _update(String text, [ImageMedia image]) {
    if (!mounted) return;

    setState(() {
      _queryResult = text;
      _image = image;
    });
  }

  @override
  Widget build(BuildContext context) {
    final children = <Widget>[
      Text(_queryResult),
    ];

    if (_image != null) children.add(FutureBuilder<Uint8List>(
      future: _image.load(),
      builder: (context, snapshot) {
        if (snapshot.hasData) return Image.memory(snapshot.data, fit: BoxFit.cover);

        return Text('Unable to load image');
      },
    ));

    return ListView(
      children: children,
    );
  }
}
0
likes
30
pub points
12%
popularity

Publisher

unverified uploader

Easy, flexible API for querying the media library on a device.

Repository (GitHub)
View/report issues

License

MIT (LICENSE)

Dependencies

flutter, permission_handler

More

Packages that depend on media_library