调用原生硬件 Api 实现照相机 拍照和相册选择 以及拍照上传
2024-09-03 07:09:38
一、Flutter image_picker 实现相机拍照和相册选择
https://pub.dev/packages/image_picker
二、Flutter 上传图片到服务器
https://pub.dev/packages/dio
上传2.0 dio: 2.1.7
//上传图片
_uploadImage(_imageDir) async{
FormData formData = new FormData.from({
"name": "zhangsna 6666666666",
"age": 20,
"sex":"男",
"file":new UploadFileInfo(_imageDir, "xxx.jpg"),
});
var response = await Dio().post("http://jd.itying.com/imgupload", data: formData); print(response);
}
案例代码 上传3.0
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:dio/dio.dart'; class CameraPage extends StatefulWidget{
CameraPage({Key key});
_CameraPage createState() => _CameraPage();
} class _CameraPage extends State {
var cameraImg;
var albumImg; // 相机
getCameraImg() async {
var camera = await ImagePicker.pickImage(source: ImageSource.camera, maxWidth: 100);
uploadImg(camera);
setState(() {
cameraImg = camera;
});
}
// 相册
getAlbumImg() async {
var album = await ImagePicker.pickImage(source: ImageSource.gallery, maxWidth: 100);
setState(() {
albumImg = album;
});
}
// 上传图片
uploadImg(File imgUrl) async {
var path = imgUrl.path;
var formData = FormData.fromMap({
"name": "wendux",
"age": 25,
"file": MultipartFile.fromFileSync(path, filename: "upload.img")
});
var response = await Dio().post("https://pub.dev/packages/dio", data: formData);
print(response);
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar: AppBar(
title: Text('设备硬件')
),
body: ListView(
children: <Widget>[
RaisedButton(child: Text('相机 上传图片'), onPressed: () {
getCameraImg();
}),
cameraImg == null ? SizedBox(height: 0) : Container(
height: 100,
child: Image.file(cameraImg),
),
RaisedButton(child: Text('相册'), onPressed: getAlbumImg),
albumImg == null ? SizedBox(height: 0) : Container(
height: 100,
child: Image.file(albumImg),
)
],
)
);
}
}
最新文章
- Apache安装及配置ssl
- BZOJ3240 [Noi2013]矩阵游戏
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition)
- MINIX3 系统任务分析
- 2 通过JNI混合使用Java和C++ ----->; 访问数组
- 设置MySQL主从同步
- 计划任务实现定时备份mysql数据库
- Windows使用WxWidgets开发界面(c++)环境搭建
- 初探HTML
- 怎样将baidu地图中的baidu logo 去掉
- [转]Adventures in Xen exploitation
- 01--css编码技巧--css揭秘
- ios下点击穿透focus获取问题
- 使用ThreadLocal实现的读写分离在迁移后的偶发错误
- Spring框架——IOC依赖注入
- Map 遍历分析
- 查看linux的cpu信息
- 拖动DIV
- 好玩的原生js的简单拖拽
- python调用数据返回字典dict数据的现象2
热门文章
- 野路子码农系列(8)我终于大致搞懂了GBDT
- C# extract img url from web content then download the img
- MySql快速入门(四)
- 曼孚科技:AI机器学习领域常用的15个术语
- JavaDay3(上)
- 在SQL中怎么把一列字符串拆分为多列
- execute、executeUpdate、executeQuery的区别
- Linux下tomcat端口被占用
- 剖析Javascript中sort()使用方法,以及重写sort()里的排序方法,实现自定义排序
- 解决webpack和gulp打包js时ES6转译ES5时Object.assign()方法没转译成功的问题