Flutter / Dart-转换图像(base64)在圆头像中显示错误

时间:2020-04-16 14:14:52

标签: flutter dart

将图像转换为:

final prefs = await SharedPreferences.getInstance(); 
var image = ((prefs.getString('photo'))); 
var send = {'name': usu, 'email': email, 'image': photo};

在小部件中:

Widget _buildDrawer(BuildContext context) { return FutureBuilder<Map>(
      future: getFutureDates(), // function where you call your api
      builder: (BuildContext context, AsyncSnapshot<Map> snapshot) {
    if(!snapshot.hasData) {
      return Center(child: CircularProgressIndicator());
    } else {
      Uint8List profile = base64.decode(snapshot.data['image']); new UserAccountsDrawerHeader(
                  accountName: new Text((json.encode(snapshot.data['name']).toString().replaceAll('"', ''))),
                  accountEmail: new Text((json.encode(snapshot.data['email']).toString().replaceAll('"', ''))),
                  currentAccountPicture: new CircleAvatar(
                    backgroundImage: MemoryImage((profile)),
                  ),
                ), } }

名称和电子邮件都可以,但是照片给我一个错误:

无效字符(以字符表示) er 5)

data:image / png; base64,/ 9j / 4AAQSkZJRgABAQAAAQABAAD / 2wCEAAkGBw8PDw8PDxAPDw4PD ...

1 个答案:

答案 0 :(得分:0)

原因:

base64字符串包含data:image/png;base64,导致错误

data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBw8PDw8PDxAPDw4PD

解决方案:

删除字符串data:image/png;base64,,您可以使用substring(22)并仅保留

/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBw8PDw8PDxAPDw4PD...

代码段

void main() { 
  String base64str = '''data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBw8PDw8PDxAPDw4PD''';
  String newString =  base64str.substring(22);      
  print(newString);

}

输出

/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBw8PDw8PDxAPDw4PD