Flutter: не удалось создать экземпляр кода изображения c при вызове Image.memory - PullRequest
1 голос
/ 08 февраля 2020

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

Widget _buildProfilePicture(double size) {
      if (user.profileImage != null) {
        return ClipRRect(
          borderRadius: BorderRadius.circular(8.0),
          child: Image.memory(
            user.profileImage,
            width: size,
            height: size,
          ),
        );
      }
}

Атрибут user.profileImage имеет тип данных Uint8List.

Когда я вызываю его, он выдает это исключение:

════════ Exception caught by image resource service ════════════════════════════════════════════════
The following _Exception was thrown while resolving an image:
Exception: Could not instantiate image codec.

When the exception was thrown, this was the stack: 
#0      _futurize (dart:ui/painting.dart:4304:5)
#1      instantiateImageCodec (dart:ui/painting.dart:1682:10)
#2      PaintingBinding.instantiateImageCodec (package:flutter/src/painting/binding.dart:88:12)
#3      MemoryImage._loadAsync (package:flutter/src/painting/image_provider.dart:714:18)
#4      MemoryImage.load (package:flutter/src/painting/image_provider.dart:706:14)
...
Image provider: MemoryImage(Uint8List#2592a, scale: 1.0)
Image configuration: ImageConfiguration(bundle: PlatformAssetBundle#633d8(), devicePixelRatio: 2.6, locale: en_US, textDirection: TextDirection.ltr, size: Size(50.0, 50.0), platform: android)
Image key: MemoryImage(Uint8List#2592a, scale: 1.0)

Я думаю, что это вызвано Image.memory.

Спасибо за ответы заранее!

1 Ответ

1 голос
/ 21 апреля 2020

Возможно, вам придется кодировать его в соответствующий тип с помощью https://pub.dev/packages/image, например:

    import 'package:image/image.dart' as imageUtils;

    var encodedImage = Image.memory(
                    imageUtils.encodePng(user.profileImage));

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