首页 > 解决方案 > Flutter:将 Base64 字符串转换为图像(类型文件变量)

问题描述

照片是使用 Flutter Package image_picker 拍摄的,并保存为“文件”类型的变量。这些图像可以用 Flutter 查看。来自 BASE64 格式的 JSON 字符串中的照片应格式化为此数据类型,以便能够显示它们。有谁知道这是如何工作的?

使用 Flutter 可以直接显示 BASE64 图像。问题是渲染时会出现“闪烁”效果,因为每次用户输入时都会重新加载照片。框架似乎没有注意到 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])
                  ],
                ),
              ),
            ),
          )
      );
    }

标签: imageflutterpackage

解决方案


import 'dart:convert';
import 'dart:typed_data';

String _base64;   
Uint8List bytes = BASE64.decode(_base64);
Image.memory(bytes)

(或者)

Image imageFromBase64String(String base64String) {
 return Image.memory(base64Decode(base64String));
}

Uint8List dataFromBase64String(String base64String) {
 return base64Decode(base64String);
}

String base64String(Uint8List data) {
 return base64Encode(data);
}

使用 'dart:convert' 包有一种更简单的方法

  Image.memory(base64Decode(base64String));

推荐阅读