本篇博客使用第三方库来进行Android图片拍照和图片的显示。第三方库的地址:https://pub.flutter-io.cn/ 。在进入网址后,查找image_picker,找到你需要的版本,个人建议使用最新的。选择完之后,复制依赖的dependencies到项目的pubspec.yaml文件的‘dependencies’节点下,保存。如果是在vscode编辑器的话,保持即引用拉取第三方库;如果实在Android studio编辑器中,需要手动get package手动拉取第三方库。当出现如下的提示时,表示get package成功,即可在项目中引用。
[flutter_app] flutter packages get
Running "flutter pub get" in flutter_app... 2.2s
exit code 0
出现上述'exit code 1'时,表示引用失败,小伙伴可以提高flutter的版本,也可以降低引用第三方库的版本,这两种方法都可以解决。
首先,在dart文件中导入image_picker类,即import 'package:image_picker/image_picker.dart';
,
其次,调用相机,得到图片的代码:`
var image = await ImagePicker.pickImage(source: ImageSource.camera);`
通过此方法,就能进行图片的拍照。
最后,对此方法进行包装,调用此方法。在本例中,使用floatingActionButton进行点击调用,再用listview进行水平显示(可根据需要进行水平和垂直设置)。具体的代码如下:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
//存放照片文件的list
List<File> fileImages = new List();
//拍照调用方法
void getImage()async{
//调用照相机拍照
var image = await ImagePicker.pickImage(source: ImageSource.camera);
setState(() {
//将图片文件加到list中
fileImages.add(image);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Get Image'),
),
body: Container(
child: ListView.builder(
scrollDirection: Axis.horizontal,//Axis.horizontal水平显示 Axis.vertical垂直显示
itemCount: fileImages.length,
itemBuilder: (BuildContext context, int position){
return showImage(position);
},
),
),
floatingActionButton: FloatingActionButton(
onPressed: getImage,
tooltip: 'get image',
child: Icon(Icons.add_a_photo),
),
);
}
//图片显示组件
Widget showImage(int index){
return Image.file(fileImages[index]);
}
}
具体的一些代码理解,请看注解,自行理解,如有问题,欢迎在博客下方留言。本篇博客到此之止,下篇博客我将带来flutter手机视频的录制和播放。
评论区