本文使用:image_picker插件
該插件已支持Android與IOS
需要適配web的同學可以使用:image_picker_web
(可以完成開發中的大部分需求,但有部分機型會出現呼叫相機時閃退問題)
話不多說先上效果圖:
拍照:

相冊:

核心代碼:
final picker = ImagePicker(); //初始化
///存放的圖片
File _imgPath;
Future getImage(bool isTakePhoto) async {
try {
var pickedFile = await picker.getImage(
source: isTakePhoto ? ImageSource.camera : ImageSource.gallery);
if (pickedFile != null) {
setState(() {
_imgPath = File(pickedFile.path);
});
} else {
print('沒有選擇任何圖片');
}
} catch (e) {
print("該手機不支持相機");
}
}
具體代碼:
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
class ImageTest extends StatefulWidget {
@override
State<StatefulWidget> createState() => ImageState();
}
class ImageState extends State<ImageTest> {
final picker = ImagePicker();
File _imgPath;
Future getImage(bool isTakePhoto) async {
try {
var pickedFile = await picker.getImage(
source: isTakePhoto ? ImageSource.camera : ImageSource.gallery);
if (pickedFile != null) {
setState(() {
_imgPath = File(pickedFile.path);
});
} else {
print('沒有選擇任何圖片');
}
} catch (e) {
print("該手機不支持相機");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: [
MaterialButton(
minWidth: 100,
height: 100,
color: Colors.blue,
onPressed: () {
getImage(true);
},
child: Text(
"拍照",
style: TextStyle(fontSize: 32, color: Colors.white),
)),
SizedBox(
height: 30,
),
MaterialButton(
minWidth: 100,
height: 100,
color: Colors.blue,
onPressed: () {
getImage(false);
},
child: Text("選擇照片",
style: TextStyle(fontSize: 32, color: Colors.white))),
_imgPath != null
? Image.file(
_imgPath,
fit: BoxFit.cover,
)
: Center(
child: Text(
"沒有選擇照片",
style: TextStyle(fontSize: 32, color: Colors.black)s,
))
],
),
);
}
}
注意:此處保存的圖片存放在快取中,如果需要保存到本地則需使用image_gallery_saver,用于保存,
本章中,若各位同學有遇到機型不兼容問題,可以私信博主,建議真機除錯哦~
歡迎留言糾正 ~ 不妨給個點贊哈哈
我是阿T一個幽默的程式員 我們下期再見~
添加我為你的好友,領取原始碼以及Flutter學習資料~

加入我們吧,一起學習,一起進步~

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/295216.html
標籤:其他
