Flutter实现相机拍照和相册选择
添加image_picker依赖:https://pub.dev/packages/image_picker/install
// ignore_for_file: prefer_const_constructors, unnecessary_this, avoid_print
import 'dart:async';
import 'dart:html';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:dio/dio.dart';
class ImagePickerPage extends StatefulWidget {
ImagePickerPage({
Key? key}) : super(key: key);
@override
State<ImagePickerPage> createState() => _ImagePickerPageState();
}
class _ImagePickerPageState extends State<ImagePickerPage> {
final picker = ImagePicker();
XFile? _imageFile;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("ImagePicker"),
),
body: Center(
child: Column(
children: [
ElevatedButton(onPressed: _takePhoto, child: const Text("拍照")),
ElevatedButton(onPressed: _openGallery, child: const Text("打开相册")),
this._imageFile == null
? Text("请选择图片")
: Image.file(File(_imageFile!.path))
],
),
),
);
}
//拍照
_takePhoto() async {
XFile? pickedFile = await picker.pickImage(
source: ImageSource.camera, maxHeight: 600, maxWidth: 600);
if (pickedFile != null) {
print(pickedFile.path);
print(File(pickedFile.path));
setState(() {
_imageFile = pickedFile;
});
}
}
//打开文件夹
_openGallery() async {
XFile? pickedFile = await picker.pickImage(
source: ImageSource.gallery, maxHeight: 600, maxWidth: 600);
if (pickedFile != null) {
print(pickedFile.path);
print(File(pickedFile.path));
setState(() {
_imageFile = pickedFile;
});
}
}
}