Flutter 图像选择器未给出颤振中图像的真实路径
我想从gallery中选择图像,但当我试图将其保存在共享首选项中时。我发现image_picker提供了临时位置,如tmp/image_picker_4415467867A964-791E-4AFA995BA-18295-0003861F9255294A。jpg 这不是图像的真实路径。我应该如何获取图像的原始位置路径以供以后使用 或者我想将整个图像保存在数据库中。。怎么办? 现在不推荐使用pickimage() 请帮忙Flutter 图像选择器未给出颤振中图像的真实路径,flutter,dart,flutter-dependencies,imagepicker,Flutter,Dart,Flutter Dependencies,Imagepicker,我想从gallery中选择图像,但当我试图将其保存在共享首选项中时。我发现image_picker提供了临时位置,如tmp/image_picker_4415467867A964-791E-4AFA995BA-18295-0003861F9255294A。jpg 这不是图像的真实路径。我应该如何获取图像的原始位置路径以供以后使用 或者我想将整个图像保存在数据库中。。怎么办? 现在不推荐使用pickimage() 请帮忙 import 'dart:io'; import 'package:flut
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Fluter demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
File _image;
String _imageloc;
@override
void initState() {
super.initState();
LoadImage();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Image Picker'),
),
body: Container(
alignment: Alignment.center,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
_imageloc != null
? CircleAvatar(
backgroundImage: FileImage(File(_imageloc)),
radius: 80,
)
: CircleAvatar(
backgroundImage: _image != null
? FileImage(_image)
: NetworkImage(
'https://www.publicdomainpictures.net/pictures/320000/velka/background-image.png'),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: RaisedButton(
onPressed: () {
PickImage();
},
child: Text('Pick Image'),
),
),
RaisedButton(
onPressed: () {
saveImage(_image.path);
},
child: Text('saved'),
),
],
),
),
);
}
void PickImage() async {
var image = await ImagePicker.pickImage(source: ImageSource.gallery);
print(image.path);
setState(() {
_image = image;
});
}
void saveImage(_imageloc) async {
SharedPreferences preferences = await SharedPreferences.getInstance();
setState(() {
preferences.setString('imageloc', _imageloc);
});
}
void LoadImage() async {
SharedPreferences saveimage = await SharedPreferences.getInstance();
setState(() {
saveimage.getString('imageloc');
});
}
}
导入'dart:io';
进口“包装:颤振/材料.省道”;
导入“包:image_picker/image_picker.dart”;
导入“package:shared_preferences/shared_preferences.dart”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“长笛手演示”,
debugShowCheckedModeBanner:false,
主题:主题数据(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
主页:MyHomePage(),
);
}
}
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
文件图像;
字符串_imageloc;
@凌驾
void initState(){
super.initState();
LoadImage();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“图像选择器”),
),
主体:容器(
对齐:对齐.center,
子:列(
crossAxisAlignment:crossAxisAlignment.center,
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
_imageloc!=null
?圆形(
背景图片:FileImage(File(_imageloc)),
半径:80,
)
:CircleAvatar(
背景图像:_图像!=null
?文件映像(_映像)
:网络图像(
'https://www.publicdomainpictures.net/pictures/320000/velka/background-image.png'),
),
填充物(
填充:常数边集全部(8.0),
孩子:升起按钮(
已按下:(){
PickImage();
},
子项:文本(“拾取图像”),
),
),
升起的按钮(
已按下:(){
saveImage(_image.path);
},
子项:文本(“已保存”),
),
],
),
),
);
}
void PickImage()异步{
var image=wait ImagePicker.pickImage(源:ImageSource.gallery);
打印(image.path);
设置状态(){
_图像=图像;
});
}
void saveImage(_imageloc)异步{
SharedReferences首选项=等待SharedReferences.getInstance();
设置状态(){
preferences.setString('imageloc',_imageloc);
});
}
void LoadImage()异步{
SharedReferences saveimage=等待SharedReferences.getInstance();
设置状态(){
saveimage.getString('imageloc');
});
}
}
好吧,如果您以后需要该图像,您需要将其复制并保存在某个位置。实际图像,而不仅仅是路径。如果我在你的应用程序中选择了一个图像,我希望它被保存。我不希望在我从多媒体资料中删除图片或切换手机时它消失
您拥有的路径足以读取图像并将其保存到您想要的任何位置。你的后端最有可能,因为我想有我的照片,甚至在另一个电话
如何做到这一点在很大程度上取决于您特定的后端,但我相信会有一个教程。您可能应该编写更多的代码。比如你在哪里运行代码?到目前为止你都试了些什么等等。带代码示例,感谢您的回复。。我以后再发。。我的系统现在不工作我已经发布了我的代码谢谢。。但如果我想稍后保存它,同时又想向用户显示它呢?显示临时文件还是复制的文件?您可以根据临时文件名向用户显示它,但一旦他们点击“保存”,我会将它上载到某个地方。将图像保存到数据库(格式?)或复制并保存到文件系统中。哪个更好?那取决于你想用它做什么。如果您想稍后再显示它,我想将它保存到由Web服务器提供服务的文件系统可能是有意义的。如果是敏感信息,也许将其放入安全数据库会更好。将其复制到本地设备可能不是您的用户对应用程序的期望。