#flutter #file #image-upload #imagepicker
Вопрос:
Я пытаюсь получить изображение из источника галереи с помощью ImagePicker, но для этого мне сначала нужно инициализировать путь изображения.
File _image;
Пожалуйста, помогите мне, я нищий. Вот мой код:
import 'dart:io'; import 'package:firebase_storage/firebase_storage.dart'; // For File Upload To Firestore import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; // For Image Picker import 'package:path_provider/path_provider.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:path/path.dart'; class ImageUpload extends StatefulWidget { const ImageUpload({Key? key}) : super(key: key); @override _ImageUploadState createState() =gt; _ImageUploadState(); } class _ImageUploadState extends Statelt;ImageUploadgt; { late String imageUrl; File _image; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Upload Image"), ), body: SingleChildScrollView( child: Column( children: [ Text("Add Image here"), Padding( padding: const EdgeInsets.all(10.0), child: Container( height: 500, width: 500, decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), border: Border.all(color: Colors.deepPurple)), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: lt;Widgetgt;[ Expanded( child: _image == null ? Center(child: Text('No Image Selected')) : Image.file(_image)), ElevatedButton( onPressed: () { // uploadImage(); getImage(); }, child: Text("Select Image")) ], ), ), ), ], ), ), ); } Future getImage() async { var image = await ImagePicker().pickImage(source: ImageSource.gallery); setState(() { _image = image as File; print('Image Path $_image'); }); } uploadPic(File _image) async { FirebaseStorage storage = FirebaseStorage.instance; String url = ''; Reference ref = storage.ref().child("image" DateTime.now().toString()); UploadTask uploadTask = ref.putFile(_image); uploadTask.whenComplete(() { url = ref.getDownloadURL() as String; }).catchError((onError) { print(onError); }); return url; } }
Ответ №1:
final picker = ImagePicker();
Инициализируйте путь к изображению следующим образом
PickedFile pickedFile = await picker.getImage(source: ImageSource.gallery); File _image = File(pickedFile.path);
Комментарии:
1. Можете ли вы внести соответствующие изменения в приведенный выше код и показать мне, как инициализировать??
2. Я думаю, что проблема, с которой вы столкнулись, здесь:
Future getImage() async { XFile? image = await ImagePicker().pickImage(source: ImageSource.gallery); if (image != null) { setState(() { _image = File(image.path); print('Image Path $_image'); });} }
Кроме того, сделайте это файлом? изображение