一、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),
)
],
)
);
}
}

最新文章

  1. Apache安装及配置ssl
  2. BZOJ3240 [Noi2013]矩阵游戏
  3. Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition)
  4. MINIX3 系统任务分析
  5. 2 通过JNI混合使用Java和C++ -----&gt; 访问数组
  6. 设置MySQL主从同步
  7. 计划任务实现定时备份mysql数据库
  8. Windows使用WxWidgets开发界面(c++)环境搭建
  9. 初探HTML
  10. 怎样将baidu地图中的baidu logo 去掉
  11. [转]Adventures in Xen exploitation
  12. 01--css编码技巧--css揭秘
  13. ios下点击穿透focus获取问题
  14. 使用ThreadLocal实现的读写分离在迁移后的偶发错误
  15. Spring框架——IOC依赖注入
  16. Map 遍历分析
  17. 查看linux的cpu信息
  18. 拖动DIV
  19. 好玩的原生js的简单拖拽
  20. python调用数据返回字典dict数据的现象2

热门文章

  1. 野路子码农系列(8)我终于大致搞懂了GBDT
  2. C# extract img url from web content then download the img
  3. MySql快速入门(四)
  4. 曼孚科技:AI机器学习领域常用的15个术语
  5. JavaDay3(上)
  6. 在SQL中怎么把一列字符串拆分为多列
  7. execute、executeUpdate、executeQuery的区别
  8. Linux下tomcat端口被占用
  9. 剖析Javascript中sort()使用方法,以及重写sort()里的排序方法,实现自定义排序
  10. 解决webpack和gulp打包js时ES6转译ES5时Object.assign()方法没转译成功的问题