侧边栏壁纸
  • 累计撰写 29 篇文章
  • 累计创建 18 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

flutter---相机的拍照和显示

bsdlzg
2022-10-20 / 0 评论 / 0 点赞 / 124 阅读 / 654 字

    本篇博客使用第三方库来进行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手机视频的录制和播放。

0

评论区