@@ -77,10 +77,10 @@ class FormData extends MapMixin<String, dynamic> {
77
77
int get _fileFieldLength {
78
78
if (_fileFieldLen == null ) {
79
79
_fileFieldLen = _chunkHeader (
80
- StringBuffer (),
81
- "" ,
82
- UploadFileInfo (null , "" , contentType: ContentType .text),
83
- ).length -
80
+ StringBuffer (),
81
+ "" ,
82
+ UploadFileInfo (null , "" , contentType: ContentType .text),
83
+ ).length -
84
84
utf8.encode (ContentType .text.mimeType).length;
85
85
}
86
86
return _fileFieldLen;
@@ -120,6 +120,7 @@ class FormData extends MapMixin<String, dynamic> {
120
120
writeMapLength (buf, key, value) {
121
121
value.keys.toList ().forEach ((mapKey) {
122
122
var nestedKey = '${key }[${mapKey }]' ;
123
+ if (value[mapKey]) return ;
123
124
if (value[mapKey] is Map ) {
124
125
writeMapLength (buf, nestedKey, value[mapKey]);
125
126
} else if (value[mapKey] is UploadFileInfo ) {
@@ -136,18 +137,21 @@ class FormData extends MapMixin<String, dynamic> {
136
137
}
137
138
138
139
_map.forEach ((key, value) {
140
+ if (value == null ) return ;
139
141
if (value is UploadFileInfo || value is List ) {
140
142
fileMap[key] = value;
141
143
return ;
142
144
} else if (value is Map ) {
143
145
value.keys.toList ().forEach ((mapKey) {
144
146
var nestedKey = '${key }[${mapKey }]' ;
147
+ if (value[mapKey] == null ) return ;
145
148
if (value[mapKey] is Map ) {
146
149
writeMapLength (buf, nestedKey, value[mapKey]);
147
150
} else if (value[mapKey] is UploadFileInfo ) {
148
151
len += _fileFieldLength;
149
152
_fileInfo (nestedKey, value[mapKey]);
150
- len += value[mapKey].bytes? .length ?? value[mapKey].file.lengthSync ();
153
+ len +=
154
+ value[mapKey].bytes? .length ?? value[mapKey].file.lengthSync ();
151
155
len += lineSplitLen;
152
156
} else {
153
157
len += _textFieldLength;
@@ -162,6 +166,7 @@ class FormData extends MapMixin<String, dynamic> {
162
166
});
163
167
164
168
fileMap.forEach ((key, fileInfo) {
169
+ if (fileInfo == null ) return ;
165
170
if (fileInfo is UploadFileInfo ) {
166
171
len += _fileFieldLength;
167
172
_fileInfo (key, fileInfo);
@@ -177,6 +182,7 @@ class FormData extends MapMixin<String, dynamic> {
177
182
} else if (e is Map ) {
178
183
e.keys.toList ().forEach ((mapKey) {
179
184
var nestedKey = '${key }[][${mapKey }]' ;
185
+ if (e[mapKey] == null ) return ;
180
186
if (e[mapKey] is Map ) {
181
187
writeMapLength (buf, nestedKey, e[mapKey]);
182
188
} else if (e[mapKey] is UploadFileInfo ) {
@@ -215,6 +221,7 @@ class FormData extends MapMixin<String, dynamic> {
215
221
var fileMap = new Map <String , dynamic >();
216
222
StringBuffer data = new StringBuffer ();
217
223
_map.forEach ((key, value) {
224
+ if (value == null ) return ;
218
225
if (value is UploadFileInfo || value is List ) {
219
226
// If file, add it to `fileMap`, we handle it later.
220
227
fileMap[key] = value;
@@ -251,12 +258,14 @@ class FormData extends MapMixin<String, dynamic> {
251
258
}
252
259
return bytes;
253
260
}
254
-
261
+
255
262
handleMapField (List <int > bytes, String key, dynamic value) {
263
+ if (value == null ) return ;
256
264
StringBuffer buffer = new StringBuffer ();
257
265
if (value is Map ) {
258
266
value.keys.toList ().forEach ((mapKey) {
259
267
var nestedKey = '${key }[${mapKey }]' ;
268
+ if (value[mapKey] == null ) return ;
260
269
if (value[mapKey] is Map ) {
261
270
handleMapField (bytes, nestedKey, value[mapKey]);
262
271
} else if (value[mapKey] is UploadFileInfo ) {
@@ -293,10 +302,10 @@ class FormData extends MapMixin<String, dynamic> {
293
302
}
294
303
295
304
List <int > _chunkHeader (
296
- StringBuffer buffer,
297
- String key,
298
- UploadFileInfo fileInfo,
299
- ) {
305
+ StringBuffer buffer,
306
+ String key,
307
+ UploadFileInfo fileInfo,
308
+ ) {
300
309
buffer.clear ();
301
310
buffer.write (boundary);
302
311
_writeln (buffer);
@@ -333,6 +342,7 @@ class FormData extends MapMixin<String, dynamic> {
333
342
}
334
343
335
344
for (var entry in _map.entries) {
345
+ if (entry.value== null ) continue ;
336
346
if (entry.value is UploadFileInfo || entry.value is List ) {
337
347
// If file, add it to `fileMap`, we handle it later.
338
348
fileMap[entry.key] = entry.value;
@@ -347,12 +357,14 @@ class FormData extends MapMixin<String, dynamic> {
347
357
}
348
358
349
359
for (var entry in fileMap.entries) {
360
+ if (entry.value== null ) continue ;
350
361
if (entry.value is UploadFileInfo ) {
351
362
await for (var chunk in addFile (entry.key, entry.value)) {
352
363
yield chunk;
353
364
}
354
365
} else {
355
366
for (var info in entry.value) {
367
+ if (info== null ) continue ;
356
368
if (info is UploadFileInfo ) {
357
369
await for (var chunk in addFile (entry.key, info)) {
358
370
yield chunk;
0 commit comments