@@ -38,7 +38,11 @@ class FormBuilderImagePicker extends FormBuilderFieldDecoration<List<dynamic>> {
3838 final EdgeInsetsGeometry ? previewMargin;
3939
4040 /// May be supplied for a fully custom display of the image preview
41- final Widget Function (BuildContext , List <Widget > children, Widget ? addButton)?
41+ final Widget Function (
42+ BuildContext context,
43+ List <Widget > children,
44+ Widget ? addButton,
45+ )?
4246 previewBuilder;
4347
4448 /// placeholder image displayed when picking a new image
@@ -313,54 +317,60 @@ class FormBuilderImagePicker extends FormBuilderFieldDecoration<List<dynamic>> {
313317 );
314318 }
315319
316- if (previewBuilder != null ) {
317- return Builder (
318- builder: (context) {
319- final widgets = value
320- .mapIndexed ((i, v) => itemBuilder (context, v, i))
321- .toList ();
322-
323- return previewBuilder (
324- context,
325- widgets,
326- canUpload ? addButtonBuilder (context) : null ,
327- );
328- },
329- );
330- }
331-
332- final child = SizedBox (
333- height: previewHeight,
334- child: itemCount == 0
335- ? null //empty list
336- : itemCount ==
337- 1 //has a single item,
338- ? canUpload
339- ? addButtonBuilder (state.context) //upload button
340- : SizedBox (
341- width: previewAutoSizeWidth ? null : previewWidth,
342- child: itemBuilder (state.context, value.first, 0 ),
343- )
344- : ListView .builder (
345- itemExtent: previewAutoSizeWidth ? null : previewWidth,
346- scrollDirection: Axis .horizontal,
347- itemCount: itemCount,
348- itemBuilder: (context, index) {
349- return Container (
350- margin: previewMargin,
351- child: Builder (
352- builder: (context) {
353- if (index < value.length) {
354- final item = value[index];
355- return itemBuilder (context, item, index);
356- }
357- return addButtonBuilder (context);
320+ final child = previewBuilder != null
321+ ? Builder (
322+ builder: (context) {
323+ final widgets = value
324+ .mapIndexed ((i, v) => itemBuilder (context, v, i))
325+ .toList ();
326+
327+ return previewBuilder (
328+ context,
329+ widgets,
330+ canUpload ? addButtonBuilder (context) : null ,
331+ );
332+ },
333+ )
334+ : SizedBox (
335+ height: previewHeight,
336+ child: itemCount == 0
337+ ? null //empty list
338+ : itemCount ==
339+ 1 //has a single item,
340+ ? canUpload
341+ ? addButtonBuilder (state.context) //upload button
342+ : SizedBox (
343+ width: previewAutoSizeWidth
344+ ? null
345+ : previewWidth,
346+ child: itemBuilder (
347+ state.context,
348+ value.first,
349+ 0 ,
350+ ),
351+ )
352+ : ListView .builder (
353+ itemExtent: previewAutoSizeWidth
354+ ? null
355+ : previewWidth,
356+ scrollDirection: Axis .horizontal,
357+ itemCount: itemCount,
358+ itemBuilder: (context, index) {
359+ return Container (
360+ margin: previewMargin,
361+ child: Builder (
362+ builder: (context) {
363+ if (index < value.length) {
364+ final item = value[index];
365+ return itemBuilder (context, item, index);
366+ }
367+ return addButtonBuilder (context);
368+ },
369+ ),
370+ );
358371 },
359372 ),
360- );
361- },
362- ),
363- );
373+ );
364374 return showDecoration
365375 ? InputDecorator (decoration: state.decoration, child: child)
366376 : child;
@@ -390,6 +400,7 @@ class XFileImage extends StatefulWidget {
390400 this .fit,
391401 this .loadingWidget,
392402 });
403+
393404 final XFile file;
394405 final BoxFit ? fit;
395406 final WidgetBuilder ? loadingWidget;
0 commit comments