繁体   English   中英

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

[英]Flutter/Dart - Convert image(base64) show error in circle avatar

将图像转换为:

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)),
                  ),
                ), } }

名称和 email 没问题,但照片给我一个错误:

无效字符(在字符 5 处)

数据:图像/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBw8PDw8PDxAPDw4PD...

原因:

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);

}

output

/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBw8PDw8PDxAPDw4PD    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM