Files
fcs/lib/pages/widgets/image_file_picker.dart
PhyoThandar 3cf530d2cb fix
2020-10-20 18:45:18 +06:30

91 lines
2.7 KiB
Dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_icons/flutter_icons.dart';
import 'package:image_picker/image_picker.dart';
import 'local_text.dart';
typedef OnFile = void Function(File);
modelBottomSheet(BuildContext context, {final OnFile onFile}) {
showModalBottomSheet(
elevation: 10,
backgroundColor: Colors.white,
context: context,
builder: (BuildContext context) {
return ImageFile(onFile: onFile);
});
}
class ImageFile extends StatefulWidget {
final OnFile onFile;
const ImageFile({Key key, this.onFile}) : super(key: key);
@override
_ImageFileState createState() => _ImageFileState();
}
class _ImageFileState extends State<ImageFile> {
File selectedFile;
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.only(bottom: 20, top: 20),
child: new Wrap(
children: <Widget>[
new ListTile(
leading: CircleAvatar(
radius: 20,
backgroundColor: Colors.green,
child: Icon(MaterialIcons.insert_photo, color: Colors.white),
),
title: LocalText(context, "pm.gallery",
color: Colors.black87, fontSize: 15),
onTap: () async {
Navigator.pop(context);
selectedFile = await pickImage(ImageSource.gallery);
if (widget.onFile != null) widget.onFile(selectedFile);
}),
new ListTile(
leading: CircleAvatar(
backgroundColor: Colors.blue,
radius: 20,
child: Center(child: Icon(AntDesign.camera, color: Colors.white)),
),
title: LocalText(context, "pm.camera",
color: Colors.black87, fontSize: 15),
onTap: () async {
Navigator.pop(context);
selectedFile = await pickImage(ImageSource.camera);
if (widget.onFile != null) widget.onFile(selectedFile);
},
),
new ListTile(
leading: CircleAvatar(
backgroundColor: Colors.red,
radius: 20,
child: Icon(Icons.delete, color: Colors.white),
),
title: LocalText(context, "pm.remove_photo",
color: Colors.black87, fontSize: 15),
onTap: () {
Navigator.pop(context);
setState(() {
selectedFile = null;
});
if (widget.onFile != null) widget.onFile(selectedFile);
},
),
],
),
);
}
pickImage(ImageSource source) async {
var tempImage = await ImagePicker.pickImage(source: source);
return tempImage;
}
}