Flutter: преобразование строки Base64 в изображение (переменная типа файла) - PullRequest
0 голосов
/ 02 июля 2019

Фотографии сделаны с помощью пакета image_picker пакета Flutter и сохранены как переменные типа «Файл».Эти изображения можно просматривать с помощью Flutter.Из строки jSON фотографии в формате BASE64 должны быть отформатированы в этот тип данных, чтобы можно было их отображать.Кто-нибудь знает, как это работает?

Можно напрямую отображать изображения BASE64 с помощью Flutter.Проблема заключается в том, что при рендеринге возникает эффект «мерцания», потому что фотографии загружаются каждый раз, когда пользователь вводит данные. Каркас не замечает в изображениях BASE64, что это всегда одна и та же фотография.Для фотографий этого типа эта проблема не возникает.

Поэтому я не могу рекомендовать визуализацию строк BASE64 напрямую.Поэтому я хочу применить преобразование.

У кого-нибудь есть решение, как преобразовать строку BASE64 в переменную типа «Файл»?

    var picturesTaken = <File>[];

    Widget _showFoto(int currentFoto) {
      return Padding(
          padding: const EdgeInsets.only(bottom: 10.0),
          child: Container(
            child: Padding(
              padding: const EdgeInsets.all(20.0),
              child: Center(
                child: Column(
                  children: <Widget>[
                    Image.file(picturesTaken[currentFoto])
                  ],
                ),
              ),
            ),
          )
      );
    }

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

На основании вашего ответа я нашел решение:

    Image.memory(
      img,
      width: 85,
      height: 85,
      fit: BoxFit.cover,
      gaplessPlayback: true
    )  
0 голосов
/ 02 июля 2019

Ваша строка base64 не должна содержать часть 'data:image/jpg;base64,' и т. Д. В префиксе

List<int> imageBytes = _image.readAsBytesSync();
String imageB64 = base64Encode(imageBytes);

для отображения в пользовательском интерфейсе

Image.memory(
   img,
   width: 85,
   height: 85,
   fit: BoxFit.cover,
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...