Получить изображение из Firestore - PullRequest
1 голос
/ 13 июля 2020

Я хочу получить изображение из Firestore, чтобы сохранить его в модели, когда мой пользователь входит в систему.

Я успешно сохранил свое изображение в Firestore, и я получил URL-адрес изображения и сохранил URL-адрес моей коллекции пользователей в Firebase.

У меня есть следующая модель для моего User в моем приложении flutter:

class User {
  String userID;
  File userImage;
  String email;
  String userName;
}

Я использую ту же модель для загрузки своих информацию о пользователе в firebase во время процесса регистрации.

Я хочу повторно использовать эту модель, когда мой пользователь входит в систему .

После получения информации о пользователе я выполняю следуйте:

User _getUserInformation(String userID, Map<String, dynamic> userInformation) {
  User userProfile = User(
    userID: userID, 
    userImage: File.fromUri(userInformation["imageURL"]),//The problem is here
    email: userInformation["email"],
    userName: userInformation["userName"],
  );
  
  return userProfile;
}

Я не могу получить свое пользовательское изображение, используя URL-адрес и метод File.fromUri (), потому что мне нужно сохранить свое пользовательское изображение в типе File переменная , мне нужно получить изображение из URL-адреса и преобразовать его в тип File .

как получить изображение из Firestore и преобразовать его в файл введите, чтобы сохранить его на моей модели пользователя?

Или некоторые у кого-то есть предложения о другом подходе? Я бы предпочел не изменять поле userImage в моей модели на тип Dynami c или тип var.

1 Ответ

0 голосов
/ 13 июля 2020

Вы можете использовать CachedNetworkImage: Кэшированное сетевое изображение вот так:

CachedNetworkImage(
        imageUrl: yourUrl,
        imageBuilder: (context, imageProvider) =>
            Container(
              height: 36,
              width: 36,
              decoration: BoxDecoration(
                shape: BoxShape.circle,
                image: DecorationImage(
                  image: imageProvider,
                  fit: BoxFit.cover,
                ),
              ),
            ),
        placeholder: (context, url) => CircularProgressIndicator(),
        errorWidget: (context, url, error) => Icon(LineIcons.exclamation),
      );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...