[go: nahoru, domu]

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

base64 decoding of text not working in flutter but working in Java android #64871

Closed
verinder84 opened this issue Aug 29, 2020 · 2 comments
Closed

Comments

@verinder84
Copy link
verinder84 commented Aug 29, 2020

i have a base64 utf8 text data stored in server

base64 text is -

String post_data =
"4Kiu4KioIPCfkYfgqK7gqKTimJ3vuI8K4Kis4KmH4Kis4KmHIOCorOCovuCoquCpgiDgqJzgqL/g\nqbDgqKbgqJzgqL7gqKjinaPvuI8K4Ki44KmB4Kit4Ki+4KiFIOCorOCph+CorOCphyDgqLXgqLDg\nqJfgqL7gpaQK4Kic4Ki/4Kmw4KiuIOCosuCoteCosCDwn5KqCuCoheCouOCpguCosuCovuCogiDg\nqKbgqYcg4Kiq4Kmx4KiV4KmH4KWkCuCoquCpgCDgqKzgqYAgMDkg4KiG4Kiy4Ki84KmHCuCorOCo\nueCpgeCopCDgqJbgqYHgqLjgqLwg4Kiw4Kmx4KisIOCopuCpgCDgqLDgqJzgqLzgqL4g4Ki14Ki/\n4KiaIOClpArgqKbgqL/gqLIg4Kio4KmC4KmwIOCouOColeCpguCoqCDgqJfgqYHgqLDgqYIg4KiY\n4KiwIOConOCoviDgqJXgqYfgpaQK8J+Zj/CfmY8="

the above text encoded using code below->

byte[] data = new byte[0];
data = ps.getData().getBytes("UTF-8");
 String base64String = Base64.encodeToString(data, Base64.DEFAULT);

in android I decode the above text using java as code below->

byte[] data;
String newStringWithEmojis=null;
 data = Base64.decode(post_data, Base64.DEFAULT);
 newStringWithEmojis = new String(data, "UTF-8");

the above shown decoding and encoding of given text is working fine in android using java.

But in flutter
base64.decode(post_data ) function not working
and give exception

EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following FormatException was thrown building PostItem(dirty, state: _PostItemState#0d2cc):
Invalid character (at character 77)
4Kiu4KioIPCfkYfgqK7gqKTimJ3vuI8K4Kis4KmH4Kis4KmHIOCorOCovuCoquCpgiDgqJzgqL/g

When the exception was thrown, this was the stack:
#0 _Base64Decoder.decodeChunk (dart:convert/base64.dart:694:7)
#1 _Base64Decoder.decode (dart:convert/base64.dart:618:14)
#2 Base64Decoder.convert (dart:convert/base64.dart:498:26)
#3 Base64Codec.decode (dart:convert/base64.dart:82:47)
#4 _PostItemState.build (package:flutterapp/PostItem.dart:28:31)
#5 StatefulElement.build (package:flutter/src/widgets/framework.dart:4663:28)
#6 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4546:15)
#7 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#8 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#9 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#10 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#11 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#12 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#13 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#14 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#15 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#16 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#17 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#18 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#19 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#20 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#21 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#22 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#23 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#24 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#25 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#26 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#27 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#28 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#29 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#30 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#31 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#32 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#33 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#34 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#35 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#36 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#37 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#38 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#39 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#40 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#41 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#42 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#43 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1164:36)
#44 SliverMultiBoxAdaptorElement.performRebuild.processElement (package:flutter/src/widgets/sliver.dart:1082:34)
#45 Iterable.forEach (dart:core/iterable.dart:283:30)
#46 SliverMultiBoxAdaptorElement.performRebuild (package:flutter/src/widgets/sliver.dart:1122:24)
#47 SliverMultiBoxAdaptorElement.update (package:flutter/src/widgets/sliver.dart:1052:7)
#48 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#49 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#50 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#51 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#52 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#53 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#54 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#55 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#56 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5566:32)
#57 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6001:17)
#58 _ViewportElement.update (package:flutter/src/widgets/viewport.dart:213:11)
#59 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#60 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#61 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#62 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#63 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#64 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#65 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#66 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#67 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#68 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#69 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#70 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#71 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#72 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#73 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#74 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#75 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#76 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#77 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#78 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#79 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#80 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#81 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#82 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#83 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#84 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#85 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#86 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#87 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#88 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#89 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#90 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#91 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#92 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#93 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#94 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#95 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#96 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#97 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#98 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#99 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#100 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#101 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#102 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#103 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#104 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#105 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#106 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#107 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#108 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#109 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#110 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#111 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#112 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#113 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#114 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#115 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#116 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#117 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#118 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#119 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#120 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#121 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#122 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#123 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#124 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#125 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#126 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#127 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#128 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#129 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#130 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#131 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#132 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#133 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#134 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#135 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#136 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#137 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#138 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#139 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#140 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#141 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#142 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#143 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#144 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#145 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#146 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#147 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#148 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#149 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#150 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#151 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5566:32)
#152 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6001:17)
#153 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#154 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#155 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#156 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#157 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#158 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#159 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#160 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#161 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#162 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#163 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#164 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#165 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#166 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#167 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#168 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#169 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#170 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#171 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#172 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#173 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#174 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#175 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#176 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#177 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#178 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#179 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#180 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#181 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#182 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#183 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#184 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#185 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#186 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#187 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#188 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#189 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#190 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#191 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#192 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#193 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#194 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#195 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#196 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#197 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#198 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#199 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#200 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#201 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#202 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#203 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#204 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#205 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#206 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#207 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#208 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#209 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#210 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#211 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#212 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#213 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#214 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#215 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#216 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#217 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#218 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#219 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#220 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#221 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#222 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#223 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#224 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#225 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#226 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#227 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#228 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#229 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#230 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#231 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#232 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#233 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#234 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#235 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#236 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#237 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#238 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#239 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#240 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#241 _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:183:11)
#242 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#243 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#244 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#245 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#246 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#247 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#248 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#249 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#250 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#251 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#252 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#253 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#254 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#255 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#256 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#257 StatefulElement.update (package:flutter/src/widgets/framework.dart:4751:5)
#258 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#259 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#260 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#261 StatelessElement.update (package:flutter/src/widgets/framework.dart:4627:5)
#262 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#263 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#264 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#265 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#266 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#267 ProxyElement.update (package:flutter/src/widgets/framework.dart:4906:5)
#268 Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#269 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#270 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#271 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#272 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2667:33)
#273 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:866:20)
#274 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:286:5)
#275 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
#276 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1056:9)
#277 SchedulerBinding.scheduleWarmUpFrame. (package:flutter/src/scheduler/binding.dart:865:7)
(elided 4 frames from class _RawReceivePortImpl, class _Timer, and dart:async-patch)

@yuanzhiying
Copy link
class Base64Util {
  static final List<String> _base64Char = [
    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", 
    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
    "+", "/",
  ];

  static List<int> base64Decoder(String str) {
    /**
     * 由于后台说sun公司的某些旧的包处理出来的base64字符串包含换行符,所以先将其删除
     */
    str = str.replaceAll("\n", "");
    List<int> list = List();
    /**
     * 由于需要将传入的字符串按4字节分组,需要先判断其长度是否为4的整数倍
     */
    if (str.length % 4 == 0) {
      /**
       * 循环取字符串的字符,每次取4个
       */
      for (int i = 0; i < str.length; i += 4) {
        String char1 = str.substring(i, i + 1);
        String char2 = str.substring(i + 1, i + 2);
        String char3 = str.substring(i + 2, i + 3);
        String char4 = str.substring(i + 3, i + 4);

        /**
         * 将取出的字符按照字码表进行转换成数字,当为等于号时,则不进行处理,因为等于号是填充符
         */
        int code1 = _base64Char.indexOf(char1);
        int code2 = _base64Char.indexOf(char2);
        int code3;
        if ("=" != char3) {
          code3 = _base64Char.indexOf(char3);
        }
        int code4;
        if ("=" != char4) {
          code4 = _base64Char.indexOf(char4);
        }

        /**
         * 将转换后的数字进行分割处理,当对应字符为等于号,则不进行分割处理
         */
        /**
         * 将第一个字节与0x3F,得到低6位,然后左移2位,腾出低2位的位置
         * 然后将第二个字节与0x30,清除高2位和低4位,再右移4位,
         * 与前一个高6位相加,得到第一个新字节
         */
        int decode1 = ((code1 & 0x3F) << 2) + ((code2 & 0x30) >> 4);
        /**
         * 将第二个字节与0x0F,得到低4位,然后左移4位,腾出低4位的位置
         * 然后将第三个字节与0x3C,清除高2位和低2位,再右移2位,
         * 与前一个高4位相加,得到第二个新字节
         */
        int decode2;
        if ("=" != char3) {
          decode2 = ((code2 & 0x0F) << 4) + ((code3 & 0x3C) >> 2);
        }
        /**
         * 将第三个字节与0x03,得到低2位,然后左移6位,腾出低6位的位置
         * 然后直接与第四个字节相加,得到第三个新字节
         */
        int decode3;
        if ("=" != char4) {
          decode3 = ((code3 & 0x03) << 6) + code4;
        }

        list.add(decode1);
        if ("=" != char3) {
          list.add(decode2);
        }
        if ("=" != char4) {
          list.add(decode3);
        }
      }
    }
    return list;
  }

  static String base64Encoder(List<int> list) {
    StringBuffer sb = StringBuffer();
    /**
     * 由于需要将传入的数组按3字节分组,所以先处理3的最大整数倍的长度的内容
     */
    int remainder = list.length % 3;
    int size = list.length - remainder;
    /**
     * 循环取数组里的字节,每次取3个
     */
    for (int i = 0; i < size; i += 3) {
      int code1 = list[i];
      int code2 = list[i + 1];
      int code3 = list[i + 2];
      /**
       * 首先将第一字节右移2位,得到左6位,与上0x3F,高2位置0,得到第一个6位
       * 然后在编码表里进行转码,得到新组的第一字节
       */
      int encode1 = (code1 >> 2) & 0x3F;
      /**
       * 接着将第一字节与0x03,即00000011,得到低2位,然后左移4位,
       * 然后将第二字节右移4位,做加法运算,得到第二个6位,转码得到新组的第二字节
       */
      int encode2 = ((code1 & 0x03) << 4) + ((code2 >> 4) & 0x0F);
      /**
       * 将第二字节与0x0F,即00001111,得到低4位,然后左移2位,
       * 然后将第三字节右移6位,得到高2位,做加法运算,得到第三个6位,转码得到新组的第三字节
       */
      int encode3 = ((code2 & 0x0F) << 2) + ((code3 >> 6) & 0x03);
      /**
       * 最后将第三字节与上0x3F,清除高2位,得到低6位,即第四个6位,转码得到新组的第四字节
       */
      int encode4 = code3 & 0x3F;

      String char1 = _base64Char[encode1];
      String char2 = _base64Char[encode2];
      String char3 = _base64Char[encode3];
      String char4 = _base64Char[encode4];

      sb.write(char1);
      sb.write(char2);
      sb.write(char3);
      sb.write(char4);
    }
    /**
     * 当原文不是3的整数倍时,则需要继续处理多出的1或2个字节
     */
    if (remainder != 0) {
      /**
       * 既然多出内容,那么至少多一个,所以第一字节直接取
       * 对第二字节需要判断
       */
      int code1 = list[size];
      int code2 = 0;
      if (remainder == 2) {
        code2 = list[size + 1];
      }
      /**
       * 新组第一二字节可直接取6位然后转码
       */
      int encode1 = (code1 >> 2) & 0x3F;
      int encode2 = ((code1 & 0x03) << 4) + ((code2 >> 4) & 0x0F);
      String char1 = _base64Char[encode1];
      String char2 = _base64Char[encode2];
      /**
       * 如果原文只多出1字节,那么新组第三字节肯定为0,那么按照规则,空字符用 '=' 代替
       * 如果多出2字节,则还继续进行取6位、转码的运算,
       */
      int encode3;
      String char3 = "=";
      if (remainder == 2) {
        encode3 = (code2 & 0x0F) << 2;
        char3 = _base64Char[encode3];
      }
      /**
       * 由于最多多出2字节,所以新组第四字节肯定没有值可以取,也就是空字符,所以直接转换为 '='
       */
      String char4 = "=";

      sb.write(char1);
      sb.write(char2);
      sb.write(char3);
      sb.write(char4);
    }

    return sb.toString();
  }
}

@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants