使用第三方库 image_picker
添加依赖
image_picker: ^0.6.2+1
使用:
先贴上完整代码
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:image_picker/image_picker.dart' as prefix0;
class ImagePicker extends StatefulWidget {
@override
_ImagePickerState createState() => _ImagePickerState();
}
File image;
class _ImagePickerState extends State<ImagePicker> {
@override
Widget build(BuildContext context) {
return Material(
child: Center(
child: GestureDetector(
child: ClipOval(
child: Container(
width: 70,
height: 70,
child: image != null ? Image.file(
image,
fit: BoxFit.cover,
):Container()
),
),
onTap: () {
_showDialog(context);
},
),
),
);
}
_showDialog(BuildContext context) {
///这个是系统的组件,底部弹出框,类似ios的那种效果
showCupertinoModalPopup(
context: context,
builder: (context) {
var dialog = CupertinoActionSheet(
title: Text('更改图像'),
cancelButton: CupertinoActionSheetAction(
onPressed: () {
Navigator.pop(context, 0);
},
child: Text('取消')),
actions: <Widget>[
CupertinoActionSheetAction(
onPressed: () {
_showImagePicker(ImageSource.camera);
Navigator.pop(context, 0);
},
child: Text('相机'),
),
CupertinoActionSheetAction(
onPressed: () {
_showImagePicker(ImageSource.gallery);
Navigator.pop(context, 0);
},
child: Text('相册'),
),
],
);
return dialog;
});
}
///ImageSource是Image_picker库里面的,不要自己去创建
_showImagePicker(ImageSource type) async {
File data = await prefix0.ImagePicker.pickImage(source: type);
setState(() {
image = data;
});
}
}
返回类型默认是File,使用非常简单,ios使用详情请移步到 https://pub.flutter-io.cn/packages/image_picker