前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >在 Flutter App 中使用相机和图库/flutter的图像选择[Flutter专题12]

在 Flutter App 中使用相机和图库/flutter的图像选择[Flutter专题12]

作者头像
徐建国
发布2021-11-30 20:56:39
发布2021-11-30 20:56:39
1.6K00
代码可运行
举报
文章被收录于专栏:个人路线个人路线
运行总次数:0
代码可运行

在 Flutter App 中使用相机和图库/照片选取图像

图像选择是我们经常需要的用户配置和其他内容的常见组件。我们将使用插件来实现。

步骤 1 — 将依赖项添加到pubspec.yaml文件。

代码语言:javascript
代码运行次数:0
复制
environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  image_picker: ^0.8.4

步骤 2 - 配置各平台

接下来,我们需要配置设置。对于Android平台,不需要任何东西。对于 iOS,打开在 ios/Runner 文件夹下找到的 Info.plist 文件,然后添加以下键。

代码语言:javascript
代码运行次数:0
复制
<key>NSPhotoLibraryUsageDescription</key>
<string>Allow access to photo library</string>

<key>NSCameraUsageDescription</key>
<string>Allow access to camera to capture photos</string>

<key>NSMicrophoneUsageDescription</key>
<string>Allow access to microphone</string>

步骤 3 — 图像选取功能

在我们的 StatefulWidget 的 State 类中,声明一个 File 变量来保存用户选取的图像。

代码语言:javascript
代码运行次数:0
复制
File _image;

现在编写两个函数,分别通过相机和照片库选择图像。可选参数 imageQuality 接受 0 到 100 之间的任何值,你可以根据应用所需的大小和质量进行调整。获取图像文件后,我们将其保存到_image变量中并调用setState(),以便它可以显示在屏幕中。

代码语言:javascript
代码运行次数:0
复制
_imgFromCamera() async {
  File image = await ImagePicker.pickImage(
    source: ImageSource.camera, imageQuality: 50
  );

  setState(() {
    _image = image;
  });
}

_imgFromGallery() async {
  File image = await  ImagePicker.pickImage(
      source: ImageSource.gallery, imageQuality: 50
  );

  setState(() {
    _image = image;
  });
}

步骤4 - 创建用于选择相机/图库的选项选择

接下来,编写一个用于显示底部工作表的函数,供用户选择相机或图库选项。

代码语言:javascript
代码运行次数:0
复制
void _showPicker(context) {
  showModalBottomSheet(
      context: context,
      builder: (BuildContext bc) {
        return SafeArea(
          child: Container(
            child: new Wrap(
              children: <Widget>[
                new ListTile(
                    leading: new Icon(Icons.photo_library),
                    title: new Text('Photo Library'),
                    onTap: () {
                      _imgFromGallery();
                      Navigator.of(context).pop();
                    }),
                new ListTile(
                  leading: new Icon(Icons.photo_camera),
                  title: new Text('Camera'),
                  onTap: () {
                    _imgFromCamera();
                    Navigator.of(context).pop();
                  },
                ),
              ],
            ),
          ),
        );
      }
    );
}

步骤 5 - 在屏幕上创建和配置图像视图

最后,让我们在屏幕上创建一个个人资料图片支架,该支架在单击时打开选择器,并显示所选图像。

代码语言:javascript
代码运行次数:0
复制
@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(),
    body: Column(
      children: <Widget>[
        SizedBox(
          height: 32,
        ),
        Center(
          child: GestureDetector(
            onTap: () {
              _showPicker(context);
            },
            child: CircleAvatar(
              radius: 55,
              backgroundColor: Color(0xffFDCF09),
              child: _image != null
                  ? ClipRRect(
                      borderRadius: BorderRadius.circular(50),
                      child: Image.file(
                        _image,
                        width: 100,
                        height: 100,
                        fit: BoxFit.fitHeight,
                      ),
                    )
                  : Container(
                      decoration: BoxDecoration(
                          color: Colors.grey[200],
                          borderRadius: BorderRadius.circular(50)),
                      width: 100,
                      height: 100,
                      child: Icon(
                        Icons.camera_alt,
                        color: Colors.grey[800],
                      ),
                    ),
            ),
          ),
        )
      ],
    ),
  );
}

全部完成,运行应用程序。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 坚果前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 步骤 1 — 将依赖项添加到pubspec.yaml文件。
  • 步骤 2 - 配置各平台
  • 步骤 3 — 图像选取功能
  • 步骤4 - 创建用于选择相机/图库的选项选择
  • 步骤 5 - 在屏幕上创建和配置图像视图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档