Любое решение для загрузки изображения в Firebase? - PullRequest
0 голосов
/ 26 октября 2019

В моем приложении есть страница «Создать продукт», где есть форма, в которой пользователь будет заполнять данные о продукте, а внизу формы у меня есть ImagePicker, где пользователь выберет изображение из своей галереи. для продукта.

Вот как выглядит код:

Future<void> _takePicture() async {
    final imageFile = await ImagePicker.pickImage(
      source: ImageSource.gallery,
    );
    setState(() {
      data.image = imageFile;
    });
    final appDir = await syspaths.getApplicationDocumentsDirectory();
    String fileName = path.basename(imageFile.path);
    final savedImage = await imageFile.copy('${appDir.path}/$fileName');
  }

используются следующие пакеты:

import 'package:image_picker/image_picker.dart';
import 'package:path/path.dart' as path;
import 'package:path_provider/path_provider.dart' as syspaths;

но при отправке моих данных в Firebase сКнопка сохранения, поскольку изображение является файлом. Я постоянно получаю эту ошибку:

Converting object to an encodable object failed: Instance of '_File'

Как я могу загрузить изображение в Firebase и сохранить его для этого продукта, а не смешивать его случайно? и следовать идентификатору продукта? и если это возможно или нет.

1 Ответ

1 голос
/ 26 октября 2019

я использую этот подход для загрузки файлов и получения URL-ссылки

 Future uploadFile(File file) async {
    String fileName = basename(file.path);
    StorageReference firebaseStroageReference =
        FirebaseStorage.instance.ref().child(fileName);

        StorageUploadTask   _uploadTask = firebaseStroageReference.putFile(file);

    StorageTaskSnapshot taskSnapshot = await _uploadTask.onComplete;

    var dowurl = await taskSnapshot.ref.getDownloadURL();

    setState(() {
     _url = dowurl.toString();
    });

  }

не забыл плагин

firebase_storage: 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...