Как я могу инициализировать путь к изображению в Flutter, так как здесь файл _image не может быть ненулевым?

#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'); });} } Кроме того, сделайте это файлом? изображение