Image_picker没有给出抖动中图像的真实路径



我想从图库中选择图像,但当我试图将其保存在共享首选项中时。我发现image_picker提供了临时位置,如tmp/image_picker_4415467867A964-791E-4AFA995BA-18295-00386F9255294A.jpg

这不是图像的真实路径。我应该如何获得图像的原始位置路径以供以后使用?

或者我想把整个图像保存在数据库中。。该怎么办?pickimage((现在已弃用?

请帮助

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');
});
}
}

好吧,如果你以后需要图像,你需要复制并将其保存在某个地方。实际的图像,而不仅仅是路径。如果我在你的应用程序中选择了一个图像,我希望它被保存。当我从图库中删除图片或切换手机时,我不希望它消失。

您拥有的路径足以读取图像并将其保存在您想要的任何位置。你的后台很可能,因为我想有我的照片,甚至在另一部手机上。

如何做到这一点在很大程度上取决于您的特定后端,但我相信会有一个教程。

最新更新