Dart base64 decoding
这是我的 base64 编码字符串:
1 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiJkMjNiN2ViMy03MDgyLTRkZDktOGQ0OC1lMjU2YTM3OTNiOTciLCJyZWZyZXNoVG9rZW4iOiJiN2M3MTc4Yi04OWRjLTQxMDctYjUzNC1hOGZiOTNhMzEwNzAiLCJuYW1lIjoiTGVuIiwiaWF0IjoxNTczMDI4MjU2fQ |
使用 https://jwt.io/ 可以正确解码
但是当尝试在 Flutter 中使用
1 2 | FormatException: Invalid character (at character 37) eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiIzYWNiNzBjZS0wYzYxLT... |
删除
我收到此错误
1 2 | FormatException: Invalid length, must be multiple of four (at character 183) ...jLTQxMDctYjUzNC1hOGZiOTNhMzEwNzAiLCJuYW1lIjoiTGVuIiwiaWF0IjoxNTczMDI4MjU2fQ |
还有其他方法可以为 Dart 解码 base64 编码的字符串
你可以先使用
例如:
1 2 3 4 5 6 7 8 9 10 | import 'dart:convert'; void main() { final String b64 = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiJkMjNiN2ViMy03MDgyLTRkZDktOGQ0OC1lMjU2YTM3OTNiOTciLCJyZWZyZXNoVG9rZW4iOiJiN2M3MTc4Yi04OWRjLTQxMDctYjUzNC1hOGZiOTNhMzEwNzAiLCJuYW1lIjoiTGVuIiwiaWF0IjoxNTczMDI4MjU2fQ'; String foo = b64.split('.')[0]; List<int> res = base64.decode(base64.normalize(foo)); print(utf8.decode(res)); } |
结果:
1 | {"alg":"HS256","typ":"JWT"} |
试试看。这将帮助你
1 2 3 4 5 6 | Center(child: Image.memory( base64Decode(image6464.substring(23).replaceAll("\ ","")) ) ), |