Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 图像选择器未给出颤振中图像的真实路径_Flutter_Dart_Flutter Dependencies_Imagepicker - Fatal编程技术网

Flutter 图像选择器未给出颤振中图像的真实路径

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

我想从gallery中选择图像,但当我试图将其保存在共享首选项中时。我发现image_picker提供了临时位置,如tmp/image_picker_4415467867A964-791E-4AFA995BA-18295-0003861F9255294A。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');
    });
  }
}
导入'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服务器提供服务的文件系统可能是有意义的。如果是敏感信息,也许将其放入安全数据库会更好。将其复制到本地设备可能不是您的用户对应用程序的期望。