photoloader 0.0.5+hotfix1
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);
}