Skip to content

Commit ec17e89

Browse files
committed
feat: previewBuilder keep InputDecorator if showDecoration is true
1 parent 779e192 commit ec17e89

1 file changed

Lines changed: 58 additions & 47 deletions

File tree

lib/src/form_builder_image_picker.dart

Lines changed: 58 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)