photoloader 0.0.5+hotfix1 copy "photoloader: ^0.0.5+hotfix1" to clipboard
photoloader: ^0.0.5+hotfix1 copied to clipboard

Photo Loader

example/lib/main.dart

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:photoloader/photo.dart';
import 'package:photoloader/photoloader.dart';
import 'package:flutter_json_widget/flutter_json_widget.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(
        title: Text('Photo Loader Demo'),
      ),
      body: HomePage(),
    ),
  ));
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: checkPermission(),
      builder: (c, s) {
        var hasPermission = s.data;
        if (hasPermission != null && hasPermission) {
          return Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                FlatButton(
                  child: Text('API: photos'),
                  onPressed: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (c) => LoadPhotosPage(),
                      ),
                    );
                  },
                ),
                FlatButton(
                  child: Text('API: photosAsJsonString'),
                  onPressed: () {
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (c) => LoadPhotosAsJsonStringPage(),
                      ),
                    );
                  },
                )
              ],
            ),
          );
        } else {
          return Center(
            child: Text('No Permission'),
          );
        }
      },
    );
  }
}

class LoadPhotosAsJsonStringPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Load Photos As Json String'),
      ),
      body: FutureBuilder(
        future: PhotoLoader.photosAsJsonString,
        initialData: "",
        builder: (c, s) {
          if (s.data == null) {
            return Center(child: Text('no json string returned from plugin'));
          } else if (s.data == "") {
            return CircularProgressIndicator(
              semanticsLabel: "Loading",
            );
          }
          List photoMapList = jsonDecode(s.data);
          return ListView.builder(
            itemCount: photoMapList.length,
            itemBuilder: (c, i) => ListTile(
              title: Text(photoMapList[i]['_id'].toString()),
              subtitle: JsonViewerWidget(
                photoMapList[i],
              ),
            ),
          );
        },
      ),
    );
  }
}

class LoadPhotosPage extends StatelessWidget {
  const LoadPhotosPage({
    Key key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Load Photos'),
      ),
      body: photoList(),
    );
  }
}

Widget photoList() {
  return FutureBuilder(
    future: PhotoLoader.photos,
    initialData: List(),
    builder: (context, snapshot) {
      List<Photo> photos = snapshot.data;
      if (photos == null || photos.isEmpty) {
        return Center(
          child: Text('No Photos'),
        );
      } else {
        return ListView.builder(
          itemBuilder: (c, i) {
            return ListTile(
              title: Text(photos[i].name),
              subtitle: Text(photos[i].path),
            );
          },
          itemCount: photos.length,
        );
      }
    },
  );
}

Future<bool> checkPermission() async {
  var isGranted = await Permission.storage.isGranted;

  if (!isGranted) {
    var status = await Permission.storage.request();
    if (status == PermissionStatus.granted) {
      return Future.value(true);
    } else {
      return Future.value(false);
    }
  }

  return Future.value(true);
}
0
likes
30
points
21
downloads

Publisher

unverified uploader

Weekly Downloads

Photo Loader

Repository (GitHub)

License

Apache-2.0 (license)

Dependencies

flutter, flutter_json_widget

More

Packages that depend on photoloader

Packages that implement photoloader