flutter 实现一个图片选择控件

2023-11-15

在最近的开发中,需要做一个选择图片(包括拍照和相册选择)然后上传的功能,我们的项目是iOS原生和flutter混编的,首先用flutter实现这个页面,选择了第三方插件image_picker,下面先看一下效果图

下面我们开始一步一步实现这个页面的逻辑,核心是在实现一个可复用的图片选择控件,支持设置最大选择图片数maxCount,支持删除。

第一步:集成image_picker ,导入图片资源(就是导入那个相机的icon和删除的icon这里就不展开说了)

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
  image_picker: 0.6.0+8

我这里用的是0.6.0+8版本,可以自行选择最新版本,然后以iOS为例,需要添加访问相册的权限

Add the following keys to your Info.plist file, located in <project root>/ios/Runner/Info.plist:

  • NSPhotoLibraryUsageDescription - describe why your app needs permission for the photo library. This is called Privacy - Photo Library Usage Description in the visual editor.
  • NSCameraUsageDescription - describe why your app needs access to the camera. This is called Privacy - Camera Usage Description in the visual editor.
  • NSMicrophoneUsageDescription - describe why your app needs access to the microphone, if you intend to record videos. This is called Privacy - Microphone Usage Description in the visual editor

然后再用到的页面中 import 'package:image_picker/image_picker.dart';

第二步:根据需求封装一个图片选择控件,我这里是一行三张图片的布局,删除按钮在右上角

首先分析一下需求:

1.支持两种样式,有图片或者上传样式

2.在有图片的样式时,才显示右上角的删除icon

3.在上传样式时,点击弹出一个选择相机/相册的菜单(iOS中的ActionSheet)

4.图片样式时,点击预览大图(这个还没实现,后续有时间再更新)

需求理清晰了就可以开始撸码:

class UploadImageItem extends StatelessWidget {
  final GestureTapCallback onTap;
  final Function callBack;
  final UploadImageModel imageModel;
  final Function deleteFun;
  UploadImageItem({this.onTap, this.callBack, this.imageModel, this.deleteFun});
  @override
  Widget build(BuildContext context) {
    return Container(
       
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flutter 实现一个图片选择控件 的相关文章

  • Flutter GetX 状态管理,路由管理,智能依赖注入

    直接上网址 GetX 关于GetX GetX 是 Flutter 上的一个轻量且强大的解决方案 高性能的状态管理 智能的依赖注入和便捷的路由管理 GetX 有3个基本原则 性能 GetX 专注于性能和最小资源消耗 GetX 打包后的apk占
  • Flutter学习之旅(五)----网络请求获取数据、解析数据和显示等待动画

    参考官方文章 英文版 网络请求是APP开发中至关重要的一步 回想一下Android开发中的Retrofit框架或者Volley框架 iOS开发中AFNetworking框架 如果使用Volley进行网络请求 我们需要new一个StringR
  • 上传图片到七牛云

    本文介绍后端如何将图片上传到七牛云 如有需要 可以参考 如有帮助 不忘点赞 预热准备 1 首先打开七牛云的官网 七牛云 2 注册一个人账号 新用户有优惠 具体可以查看官网通讯 3 进入个人控制台 打开 对象存储 gt 空间管理 然后我们新建
  • 微信小程序uploader上传文件并提交表单数据完整案例(接口框架WebAPI)

    文章目录 写在前面的话 uploader介绍 用法与代码 小程序前端 后台接口 WebAPI 采坑记录 写在前面的话 最近又自己在折腾微信小程序了 最新的一个功能中需要实现图片上传 幸运的是 微信小程序扩展能力中有现成的文件上传组件uplo
  • Flutter开发(十二)—— 页面跳转与返回

    示例代码 以下代码展示页面跳转与返回 抛开所有复杂因素 只展示最简单的跳转 第一个页面 点击按钮时onPressed 进行相应 通过 Navigator push 和 MaterialPageRoute 进行页面跳转功能实现 第二个页面 点
  • flutter 使用image_picker上传图片

    第一步 封装 可以单独放在一个文件里 可以直接复制 选择图片函数 拍照 HspTakePhoto async var image await ImagePicker pickImage source ImageSource camera m
  • springboot将图片上传至七牛云服务器(超详细)

    我们在公司的业务开发中 经常会接触到图片上传功能 有很多小伙伴都会在这里遇坑 特别是将图片上传至七牛云服务器上 网上的很多讲解也都很不明确 那么今天我们就要来讲一讲如何将本地的图片上传至七牛云服务器上 配合步骤自己做一个小的demo吧 本文
  • flutter 修改iOS app图标 名称

    这里主要讲2点 一是 iOS app的图标尺寸大小 二 是如何修改iOS app图标以及名称 iOS图标尺寸大小 首先我们打开xcode 并打开项目 找到app图标的位置 接下来我们可以看到图标下面有很详细的pt提示 这里的pt跟web的p
  • mac 下 vscode 通过wifi调试真机

    前言 继续上一篇如何在mac 环境下安装adb 这一篇我们将在有adb环境下进行无线模式的调试 在vscode下载插件 adb interface vscode 如上图输入 adb com 然后在右边进行安装 注意看下面的使用步骤 使用步骤
  • Flutter CustomScrollView要点

    在上篇文章中我们学了SingleChildScrollView这个滑动控件 现在我们学习一下CustomScrollView这个控件 CustomScrollView这个控件是针对多个滚动布局的组件 比如顶部一个GridView 底部又来一
  • Flutter:自定义组件的上下左右弹出层

    背景 最近要使用Flutter实现一个下拉菜单 需求就是 在当前组件下点击 其下方弹出一个菜单选项 如下图所示 实现起来 貌似没什么障碍 在Flutter中本身就提供了弹出层PopupMenuButton组件和showMenu方法 于是开搞
  • Flutter 图片选取及裁剪

    在开发项目里修改用户头像的功能 涉及到图片选取及裁剪 基本实现步骤如下 1 pubspec yaml 添加 image picker 1 0 1 image cropper 4 0 1 dependencies image picker 1
  • Flutter SingleChildScrollView要点

    知识要点 SingleChildScrollView类似Android中的ScrollView 只接收一个子组件 SingleChildScrollView this scrollDirection Axis vertical 滚动方向 默
  • 微信小程序遇到的坑系列---小程序上传图片线上失败

    微信小程序中 上传图片的代码如下 实现功能 1 上传图片到七牛云 2 上传成功后 对于返回的路径展示到页面 3 将返回的路径发送给后端 对于第一个需求 1 上传图片到七牛云 我们需要在七牛云上有一个账号去存自己的图片 于是不能忽略的一步 就
  • flutter 图表插件之fl_chart

    前言 之前很少接触图表功能 以为图表这种功能只能在H5上才能发挥得淋漓尽致 可谁曾料想 早有大神先把强大的chart图表功能给移植到flutter端上了 而且两端都可适用 下面给出网址 pub上 https pub dev packages
  • 高帧率手机 Flutter 列表慢慢拖动的时候会有明显的抖动

    高帧率手机上 Flutter列表慢慢拖动的时候会感觉到明显的抖动现象 比如 一加手机输入的运行频率为120hz 而显示屏的运行频率为90hz 滚动时 这种不匹配会导致性能下降 google团队通过以下的方法来解决此问题 void main
  • flutter 实现一个图片选择控件

    在最近的开发中 需要做一个选择图片 包括拍照和相册选择 然后上传的功能 我们的项目是iOS原生和flutter混编的 首先用flutter实现这个页面 选择了第三方插件image picker 下面先看一下效果图 下面我们开始一步一步实现这
  • 第一百三十六回 WillPopScope组件

    文章目录 概念介绍 使用方法 示例代码 我们在上一章回中介绍了下拉刷新组件相关的内容 本章回中将介绍 WillPopScope组件 闲话休提 让我们一起Talk Flutter吧 概念介绍 我们在本章回中介绍的WillPopScope组件是
  • 在Flutter中如何使用多图像选择器选择图像后获取图像路径?

    我想从选定的多个图像中获取图像路径 我正在使用这个link选择多个图像但我 获得了资产 我想要所选多个图像的路径 因为我想上传到 API 我在中添加了这个依赖项pubspec yaml如果有什么好的办法请告诉我 multi image pi
  • Flutter readAsBytesSync 文件读取不完整以进行 base64 编码

    项目清单 我正在尝试通过 HTTP POST 使用 base64 编码将 JPG 图像 由模拟器中的 ImagePicker 捕获 发送到 AWS REST API 但是 readAsBytesSync 操作仅读取图像的 头 部分 我已经测

随机推荐

  • 稳压芯片TPS54531的设计和分析

    2020 9 5补充 最终5 28V转3 3V的输出电路可以推算出来 输入的电压下限为4V R1为330K R2为160K 输出的电压为3 3V R5为10K R6为3 3K 输出的电流0 1A L1为47uH 根据相位增益进行补偿 C6为
  • 二叉排序树与平衡二叉树(BST&AVLT)

    平衡二叉树的一些操作 平衡二叉树相对于二叉排序树来说是二叉排序树的一个优化版 避免了二叉排序树中的极端情况 想更好的理解还是要结合图片自己动手做做QwQ 这里写的是双平衡 双旋转版 并非LL RR LR RL四种特殊情况单独处理 平衡二叉树
  • STM32速成笔记—中断

    文章目录 一 什么是中断 二 中断的相关概念 2 1 中断优先级 2 2 中断嵌套 2 3 中断服务函数 2 4 中断标志位 三 外部中断EXIT 四 中断程序配置 4 1 设置中断分组并使能中断 4 2 初始化EXIT 4 3 编写中断服
  • twinbasic开发浏览器edge webview2包装

    twinbasic开发浏览器edge webview2包装 QQ 2776478814 有需要写制浏览器控件 写爬虫 数据采集 自动输入的可以找我
  • 爬取嘉兴市人才网即时招聘信息并写入文本TXT完整案例

    上一次讲到爬取嘉兴市人才网即时招聘栏目输出每一页的标题链接 点此查看 这次接着上一次的内容把完整的爬虫代码讲解完 再次声明 代码仅供技术学习交流 不作其他用途 思路 接着上一篇文章 接下来就是循环遍历列表中的每一个url 这个url指的就是
  • 爬虫入门第10课:实现代理池的API模块

    爬虫学习知识点及案例篇 汇总 爬虫入门第1课 代理池概述及开发环境 爬虫入门第2课 代理池的设计 爬虫入门第3课 实现代理池思路 爬虫入门第4课 定义代理IP的数据模型类 爬虫入门第5课 实现代理池工具模块 爬虫入门第6课 实现代理池的校验
  • AtCoder Beginner Contest 203 Pond(二分+二维前缀和)

    样例输入 样例1 3 2 1 7 0 5 8 11 10 4 2 样例2 3 3 1 2 3 4 5 6 7 8 9 样例输出 样例1 4 样例2 5 据说这个题用对顶堆维护被卡了 先挂一手官方该题题解链接 大体思路 二分 将原矩阵根据二分
  • 企业和软件工程师外包公司合作有哪些好处呢

    互联网技术的快速发展和普及也加速了企业信息化进程步伐 目前很多企业在加快信息化建设过程中遇到软件人才资源配置问题 正面临如下困境 临时及灵活的用人需求 招聘团队对专业软件开发人员招聘困难 内部软件人力不足 没有招聘编制 软件技术人员用工及管
  • 简单的 C/C++ 项目自动化构建--Xmake

    Xmake 简介 https xmake io XMake是一个基于Lua的轻量级跨平台自动构建工具 支持在各种主流平台上构建项目 Xmake Build backend Project Generator Package Manager
  • k8s-1.25高可用部署

    文章目录 k8s 1 25高可用部署 亲测可用 1 安装要求 2 准备环境 3 所有master节点部署keepalived 3 1 安装相关包和keepalived 3 2配置master节点 3 3 启动和检查 4 部署haproxy
  • kvm CPU绑定与查询

    cpu绑定 格式 virsh vcpupin domain name vcpu hostcpu config live 例如 virsh vcpupin 16 3 15 config live 说明 将kvm虚拟机第4个vcpu与宿主机第1
  • 计算机网络分层结构—OSI参考模型、TCPI参考模型、五层体系结构

    计算机网络分层结构 5层体系结构是在参考 OSI参考模型 与 TCP IP参考模型 得出的 一 OSI七层模型 OSI七层协议模型包括 应用层 Application 表示层 Presentation 会话层 Session 传输层 Tra
  • C++ Primer Plus P31 编程练习(编写一个C++程序,它使用3个用户定义的函数(包括main),并生产以下输出)——中职

    C Primer Plus P31 编程练习 第三题 编写一个C 程序 它使用3个用户定义的函数 包括main 并生产以下输出 Three blind mice Three blind mice See how they run See h
  • STM32---内部FLASH

    FLASH 1 FLASH介绍 主存储器 分为4个16KB扇区 1个64KB扇区和7个128KB扇区 boot0 boot1都接GND时从0x08000000开始运行代码 系统存储器 器件在系统存储器自举模式下从该存储器启动 主要存放芯片的
  • Python学习中阶:面向对象程序设计

    终于到了面向对象的编程这部分 看完了基本数据类型 函数以及文件的操作 终于开始 面 向 对 象 的 编 程 啦 本部分主要涉及四部分 面向对象的编程 异常处理 进程和线程 重点主要是面向对象的编程 进程和线程 此外 本部分内容是以 Pyth
  • php sybase存储过,SYBASE存储过程详解

    SYBASE存储过程 一 存储过程简介 二 存储过程的创建 修改 删除 三 存储过程中的参数 返回值和变量 四 存储过程中的流程控制语言 五 存储过程中的事务 游标 六 ASE存储过程和IQ存储过程的常见区别 附例子 1 存储过程简介 存储
  • TCP如何实现可靠传输

    TCP的特点 面向字节流 面向连接 可靠传输 可靠传输的实现 1 确认应答机制 对收到的信息给发送方发送报文确认收到数据 2 超时重传机制 等待200ms没有收到接收方的确认应答则说明数据丢失 那么就要进行重新发送 3 序号 确认号 告诉发
  • Flutter利用ScrollController获取、控制滚动组件的滚动位置

    Flutter 中的可滚动组件主要由三个角色组成 Scrollable Viewport 和 Sliver 我们如何利用ScrollController来获取滚动组件的滚动位置 1 先构建一个ScrollController ScrollC
  • Python未来的发展前景到底如何?

    对于程序员而言 了解编程语言的发展趋势 有助于个人职业成长 而对于想要入行IT的新人而言 最大的疑惑大多来自于不知道该选择哪门编程语言发展前景更好 有人让你学Java 因为使用的人最多 有人让你学Python 因为简单易学 是人工智能时代的
  • flutter 实现一个图片选择控件

    在最近的开发中 需要做一个选择图片 包括拍照和相册选择 然后上传的功能 我们的项目是iOS原生和flutter混编的 首先用flutter实现这个页面 选择了第三方插件image picker 下面先看一下效果图 下面我们开始一步一步实现这