flutter 上传图片并裁剪

1.首先在pubspec.yaml文件中新增依赖pub.dev
image_picker: ^0.8.7+5
image_cropper: ^4.0.1
2.在Android的AndroidManifest.xml文件里面添加权限
<activityandroid:name="com.yalantis.ucrop.UCropActivity"android:screenOrientation="portrait"android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
3.在ios的Info.plist文件里面添加权限 项目根目录
<key>NSCameraUsageDescription</key><string>这是你的自拍照</string><key>NSMicrophoneUsageDescription</key><string>用于音频插件</string><key>NSPhotoLibraryUsageDescription</key><string>用于相册选择插件</string><key>UIBackgroundModes</key><array><string>remote-notification</string></array>
4.代码实现
_checkAvatar() {if (!kIsWeb) {loading(() async {final picker = ImagePicker();final pickerFile = await picker.pickImage(source: ImageSource.gallery);if (pickerFile != null) {CroppedFile? croppedImage = await ImageCropper().cropImage(sourcePath: pickerFile.path, //图片资源aspectRatio: const CropAspectRatio(ratioX: 1, ratioY: 1), //裁剪框比例uiSettings: [AndroidUiSettings(toolbarTitle: '裁剪',lockAspectRatio: true //锁定图片纵横比),IOSUiSettings(title: '裁剪',resetButtonHidden: true, //不显示重置按钮aspectRatioLockEnabled: true, //锁定图片纵横比aspectRatioPickerButtonHidden: true, //隐藏切换纵横比按钮doneButtonTitle: "完成", //confirm按钮文字cancelButtonTitle: "取消" //cancel按钮文字)]);//根据XFile对象的路径获得图片进行裁剪//裁剪完成if(croppedImage != null) {//裁剪后图片的路径String filepath = croppedImage.path;final res = await Api.getInstance().uploadAvatar(Provider.memberId, filepath);//pickerFile.pathif (res['code'] == 0) {setState(() {ThemeSnackBar.show(context, res['msg']);_getUserInfo();_user['profilePhoto'] = res['data']['url'];});} else {ThemeSnackBar.show(context, res['msg']);}print("filepath-----$filepath");}}});} else {final uploadInputElement = html.FileUploadInputElement();uploadInputElement.multiple = false;uploadInputElement.draggable = true;uploadInputElement.click();uploadInputElement.onChange.listen((event) {final file = uploadInputElement.files?.first;if (file != null) {loading(() async {final formData = html.FormData();formData.appendBlob("avatarfile", file.slice(), file.name);formData.append("memberId", Provider.memberId);Api.getInstance().uploadAvatarFromHtml(formData, (e) {if (e['code'] == 0) {setState(() {_user['profilePhoto'] = e['data']['url'];});} else {ThemeSnackBar.show(context, e['msg']);}});});}});}
相关文章:
flutter 上传图片并裁剪
1.首先在pubspec.yaml文件中新增依赖pub.dev image_picker: ^0.8.75 image_cropper: ^4.0.1 2.在Android的AndroidManifest.xml文件里面添加权限 <activityandroid:name"com.yalantis.ucrop.UCropActivity"android:screenOrientation"portrait"andro…...
一台服务器上部署 Redis 伪集群
哈喽大家好,我是咸鱼 今天这篇文章介绍如何在一台服务器(以 CentOS 7.9 为例)上通过 redis-trib.rb 工具搭建 Redis cluster (三主三从) redis-trib.rb 是一个基于 Ruby 编写的脚本,其功能涵盖了创建、管…...
ealtek高清晰音频管理器(realtek高清晰音频管理器怎么设置win10)
本文为大家介绍realtek高清晰音频管理器(realtek高清晰音频管理器怎么设置win10),下面和小编一起看看详细内容吧。 我们都使用电脑来听音乐、看电影或者进行其他操作,但是如果我们觉得电脑产生的音效不够立体,我们就会想要去Realtek来设置音…...
微信小程序 scroll-view 组件的 bindscroll 不触发不生效
使用微信小程序基础组件中的scroll-view,但是滑动的时候 bindscroll 一直不生效。 <view class"container log-list"><scroll-view scroll-y style"height:100%;white-space:nowrap;" scroll-into-view"{{toView}}" enable…...
datax 删除分区数据,再写入MySQL脚本
#! /bin/bashDATAX_HOME/opt/module/datax#1、判断参数是否传入 if [ $# -lt 1 ] thenecho "必须传入all/表名..."exit fi #2、判断日期是否传入 [ "$2" ] && datestr$2 || datestr$(date -d -1 day %F)#DataX导出路径不允许存在空文件,…...
hyperf 十四 国际化
一 安装 composer require hyperf/translation:v2.2.33 二 配置 1、设置语言文件 文件结构: /storage/languages/en/messages.php /storage/languages/zh_CH/messages.php // storage/languages/en/messages.php return [welcome > Welcome to our applicat…...
C语言_初识C语言指针
文章目录 前言一、指针 ... 一个内存单元多大比较合适?二、地址或者编号如何产生?三、指针变量的大小 前言 内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。 所以为了有效的使用内存,就把内存划分成一个个…...
EMQX启用双向SSL/TLS安全连接以及java连接
作为基于现代密码学公钥算法的安全协议,TLS/SSL 能在计算机通讯网络上保证传输安全,EMQX 内置对 TLS/SSL 的支持,包括支持单/双向认证、X.509 证书、负载均衡 SSL 等多种安全认证。你可以为 EMQX 支持的所有协议启用 SSL/TLS,也可…...
4399面试总结C/C++游戏开发
主要流程 首先询问了C/C知识点 然后询问操作系统,计算机组成,数据结构,计算机网络哪两门熟悉 涉及的相关问题 多态的概念 tcp,udp? tcp,udp区别 tcp可靠,udp不可靠 tcp这个链接的过程? 一个TCP连接必须要经过三次“…...
hashlib 模块学习
hashlib 是 Python 标准库中用于散列和摘要算法的模块。散列算法将输入数据转换为固定长度的散列值(也称为摘要),并且对于相同的输入始终生成相同的散列值。这对于存储密码、数字签名、数据完整性验证等领域非常有用。以下是对 hashlib 模块的…...
大模型开发05:PDF 翻译工具开发实战
大模型开发实战05:PDF 翻译工具开发实战 PDF-Translator 机器翻译是最广泛和基础的 NLP 任务 PDF-Translator PDF 翻译器是一个使用 AI 大模型技术将英文 PDF 书籍翻译成中文的工具。这个工具使用了大型语言模型 (LLMs),如 ChatGLM 和 OpenAI 的 GPT-3 以及 GPT-3.5 Turbo 来…...
LeetCode 43题:字符串相乘
题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 "2", num2 "3&…...
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
一、项目简介 本项目是一套基于java Swing 和 mysql实现的飞机订票系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过…...
Jmeter性能综合实战 —— 签到及批量签到
提取性能测试的三个方面:核心、高频、基础功能 签 到 请 求 步 骤 1、准备工作: 签到线程组n HTTP请求默认值n HTTP cookie 管理器n 首页访问请求n 登录请求n 查看结果树n 调试取样器l HTTP代理服务器 (1)创建线程组 …...
燃气管网监测系统,提升城市燃气安全防控能力
燃气是我们日常生活中不可或缺的能源,但其具有易燃易爆特性,燃气安全使用、泄漏监测尤为重要。当前全国燃气安全事故仍呈现多发频发态势,从公共安全的视角来看,燃气已成为城市安全的重大隐忧!因此,建立一个…...
【SQL】1731. 每位经理的下属员工数量 ( 新思想:确定左表,依次添加后续字段)
leetcode题目链接 注意点 确定左表(即,确定result表中的主键),依次添加后续字段。注意:主键可能是一个字段,也可能是多个字段COUNT(DISTINCT()),一般为了防止重复,使用COUNT计数时,…...
AMD Radeon RX 7000/6000系列显卡安装ROCm 调用CUDA
A卡用户画图炼丹、跑大模型甚至是跑机器学习、深度学习的有福了~ 注意:ROCm目前仅限在Linux系统下可用,Windows暂不支持 1. 安装ROCm RX6000系列及以下显卡使用ROCm 5.4.2稳定版本命令 【支持包括桌面级AMD Radeon RX6950XT、RX6900XT、RX6800XT、RX6…...
钉钉小程序引用阿里巴巴图标
2.打开的界面如图,先建一个iconfont.acss文件,全选浏览器打开的样式代码,复制粘贴进新建的iconfont.acss文件中 3.使用...
深入了解Nginx:高性能的开源Web服务器与反向代理
一、Nginx是什么 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,也可以作为负载均衡器和HTTP缓存服务器使用。它采用事件驱动、异步非阻塞的处理方式,能够处理大量并发连接和高流量负载ÿ…...
vue3 自定义显示内容
vue3 自定义显示内容 vue3 自定义显示内容示例uni-app封装自定义内容组件 vue3 自定义显示内容 在 Vue 3 中,你可以通过插槽(Slot)来自定义组件的显示内容。 插槽允许你将额外的内容插入到组件的特定位置,从而实现更灵活的组件…...
LNMP架构拆分实战:从单机到分布式集群的演进与优化
1. 项目概述:从单机LNMP到分布式架构的必然演进如果你正在运维一个基于LNMP(Linux, Nginx, MySQL/MariaDB, PHP)架构的网站,并且发现随着用户量的增长,网站响应越来越慢,甚至偶尔出现数据库连接失败、页面加…...
ThingsBoard共享属性实战:从MQTT订阅到规则链触发的完整数据流解析
ThingsBoard共享属性实战:从MQTT订阅到规则链触发的完整数据流解析 在物联网平台开发中,数据流的清晰理解和精确控制是构建可靠系统的关键。ThingsBoard作为一款开源的物联网平台,其共享属性机制和规则链引擎为开发者提供了强大的数据流转能力…...
论文写得像流水账?资深教授推荐这几个AI写作辅助软件
论文写得像流水账?选题难、逻辑乱、语言差,是很多学生共同的困扰。其实,只要用对AI写作辅助工具,再配合科学的写作流程,就能大幅提升效率和质量。资深教授普遍推荐:千笔AI(中文全流程首选&#…...
轻松健康任命游木聪为CFO
雷递网 乐天 5月20日轻松健康集团(股份代码:2661)日前发布公告,宣布任命游木聪为公司CFO,自2026年5月18日起生效。资料显示,游木聪现年48岁,在财务规划、战略投资及M&A方面具有丰富经验。游…...
2026年AI辅助研发趋势:智能知识问答如何重塑企业知识库的未来?
在2026年的当下,大模型技术已经从最初的"聊天玩具"逐渐渗透到企业级研发的毛细血管中。作为深耕DevOps领域的架构师,我观察到一个显著的变化:企业知识库(Knowledge Base)正在从单纯的"文档存储中心&quo…...
Go语言实现CI/CD流水线:从GitHub Actions到Argo CD的完整指南
Go语言实现CI/CD流水线:从GitHub Actions到Argo CD的完整指南 引言 CI/CD是现代软件开发的核心实践,Go语言项目可以通过各种CI/CD工具实现自动化构建、测试和部署。本文将深入探讨Go语言项目的CI/CD流水线实现,涵盖GitHub Actions、GitLab CI…...
2026,AI Agent 真的开始上班了——从 MCP 协议到生产部署,一份踩坑实录
爆款标题备选2026 年,我司来了一个 AI 同事——Agent 落地实录MCP 协议 LangChain Dify:把 AI Agent 塞进生产环境的正确姿势BBC 报道了三个中国人的 AI 恐惧,但我想说点不一样的AI Agent 从 Demo 到生产,中间隔着一个 MCP 协议…...
告别HDR格式混乱:用Python代码实战HLG与PQ曲线互转(附完整代码)
告别HDR格式混乱:用Python代码实战HLG与PQ曲线互转(附完整代码) 在视频处理领域,HDR(高动态范围)技术已经成为提升视觉体验的关键要素。然而,HLG(Hybrid Log-Gamma)和PQ&…...
别再纠结软件IIC了!用STM32硬件IIC驱动0.96寸OLED,实测代码稳定不掉线
从软件IIC到硬件IIC:STM32驱动OLED的终极稳定方案 在嵌入式开发中,OLED显示屏因其高对比度、低功耗和快速响应等优势,成为许多项目的首选显示设备。然而,许多开发者在使用STM32驱动OLED时,往往会遇到通信不稳定、显示闪…...
小白程序员必备:从零基础到大模型实战,这份学习路线图请收藏!
本文结合530名开发者的经验,为AI初学者提供从零基础到项目实战的完整学习路线。核心内容包括:Python编程、数学基础、机器学习、深度学习框架(PyTorch)、科学计算库(NumPy)等关键技能,并避开了常…...
