问题描述
我是Flutter的新手。我只想拍照并显示相机和图库应用程序。但是当我使用下面的代码时,它不会将图库文件保存在应用程序目录中。
实际上,路径提供程序在哪里存储文件,为什么不复制它? 我缺少任何许可吗..请帮助我
import 'package:Flutter/material.dart';
import 'dart:io';
import 'package:image_picker/image_picker.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
File _storedImage;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Imagesave',theme: ThemeData(
primarySwatch: Colors.blue,visualDensity: VisualDensity.adaptivePlatformDensity,),home: Scaffold(
appBar: AppBar(
title: Text('image save'),body: Column(
children: [
_storedImage != null
? Image.file(_storedImage)
: Text('No image selected'),RaisedButton(
child: Text("hi"),onpressed: () {
_takePicture();
},)
],);
}
void _takePicture() async {
// 1. Create an ImagePicker instance.
final ImagePicker _picker = ImagePicker();
final PickedFile pickedImage =
await _picker.getimage(source: ImageSource.gallery);
if (pickedImage == null) {
return;
}
File tmpFile = File(pickedImage.path);
Directory directory = await getApplicationDocumentsDirectory();
final String path = directory.path;
final String fileName =
basename(tmpFile.path); // Filename without extension
final String fileExtension = extension(tmpFile.path); // e.g. '.jpg'
File tmpFile2 = await tmpFile.copy('$path/$fileName$fileExtension');
setState(() {
_storedImage = tmpFile2;
});
//setState(() => _storedImage = tmpFile);
}
}
解决方法
1。添加最新版本的Dependency image_picker和路径提供程序
2。在清单文件中授予以下权限
uses-permission android:name =“ android.permission.READ_EXTERNAL_STORAGE”
uses-permission android:name =“ android.permission.WRITE_EXTERNAL_STORAGE”
uses-permission android:name =“ android.permission.CAMERA”
3.pub获得
4。再次运行