imageUI method
Implementation
Widget imageUI(Function funAdd, Function funDelete, {double? padding}) => Container(width: 1.sw,
margin: EdgeInsets.fromLTRB(padding??40.sp, padding??40.sp, padding??40.sp, 0), padding: EdgeInsets.all(20.sp),
decoration: BoxDecoration(image: DecorationImage(fit: BoxFit.fill,
image: Image.asset('assets/images/v5/bg_border.png').image),
borderRadius: BorderRadius.circular(16.sp)), height: 320.sp,
child: BlocBuilder(bloc: bloc, builder: (context, state) =>
images!.isEmpty ? ButtonImageWidget(16.sp, funAdd, Column(children: [
Image.asset('assets/images/v5/ic_add_image.png', width: 114.sp, height: 114.sp),
Padding(padding: EdgeInsets.only(top: 16.sp, bottom: 8.sp),
child: LabelCustom('Upload ảnh', size: 36.sp, color: const Color(0xFF5B5B5B))),
LabelCustom('Thêm ảnh hoặc chụp ảnh mới', size: 30.sp, color: const Color(0xFF5B5B5B), weight: FontWeight.normal)
], mainAxisAlignment: MainAxisAlignment.center))
: Row(children: [
Expanded(child: ListView.separated(padding: EdgeInsets.zero,
itemCount: images!.length, scrollDirection: Axis.horizontal,
separatorBuilder: (context, index) => SizedBox(width: 20.sp),
itemBuilder: (context, index) => Stack(children: [
ClipRRect(child: Image.memory(
Uint8List.fromList(images![index].bytes), height: 280.sp, fit: BoxFit.cover),
borderRadius: BorderRadius.circular(16.sp)),
ButtonImageWidget(100, () => funDelete(index), Container(
margin: EdgeInsets.all(10.sp),
padding: EdgeInsets.all(10.sp),
decoration: BoxDecoration(
color: Colors.black26,
borderRadius: BorderRadius.circular(100)
),
child: Icon(Icons.clear, color: Colors.white, size: 42.sp)
))
], alignment: Alignment.topRight)
)),
Padding(child: ButtonImageWidget(100, funAdd, Image.asset('assets/images/v5/ic_add_image.png',
width: 114.sp, height: 114.sp)), padding: EdgeInsets.only(left: 20.sp))
]), buildWhen: (oldS, newS) => newS.runtimeType.toString() == 'AddImageHomeState'));