Я использую плагин image_picker для получения изображения с камеры. Я вижу, что это изображение хранится в Android / data / com.example.picker / data / Picture / Files / xyz.png. Можно ли сохранить это в определенной папке c и загрузить в Image.file (). Ниже приведен код, который я пробовал до сих пор.
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'dart:io' as IO;
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as path;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Pick Image From Camera & Gallery')),
body: Center(child: MyImagePicker())));
}
}
class MyImagePicker extends StatefulWidget {
@override
MyImagePickerState createState() => MyImagePickerState();
}
class MyImagePickerState extends State {
File imageURI;
Future getImageFromCamera() async {
var image = await ImagePicker.pickImage(source: ImageSource.camera);
setState(() {
imageURI = image;
final bytes = image.readAsBytesSync();
String img64 = base64Encode(bytes);
print(bytes);
print(img64);
});
}
Future getImageFromGallery() async {
var image = await ImagePicker.pickImage(source: ImageSource.gallery);
setState(() {
imageURI = image;
});
}
Future<File> writeImageTemp(String base64Image, String imageName) async {
final dir = await getTemporaryDirectory();
await dir.create(recursive: true);
final tempFile = File(path.join(dir.path, imageName));
await tempFile.writeAsBytes(base64.decode(base64Image));
return tempFile;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
imageURI == null
? Text('No image selected.')
: Image.file(imageURI,
width: 300, height: 200, fit: BoxFit.cover),
Container(
margin: EdgeInsets.fromLTRB(0, 30, 0, 20),
child: RaisedButton(
onPressed: () => getImageFromCamera(),
child: Text('Click Here To Select Image From Camera'),
textColor: Colors.white,
color: Colors.green,
padding: EdgeInsets.fromLTRB(12, 12, 12, 12),
)),
Container(
margin: EdgeInsets.fromLTRB(0, 0, 0, 0),
child: RaisedButton(
onPressed: () => getImageFromGallery(),
child: Text('Click Here To Select Image From Gallery'),
textColor: Colors.white,
color: Colors.green,
padding: EdgeInsets.fromLTRB(12, 12, 12, 12),
))
])));
}
}
Я хочу иметь отдельную папку, потому что эти изображения хранятся в папке приложения, что увеличит размер приложения. Может кто-нибудь, пожалуйста, помогите мне с этим. Заранее спасибо.