signaturePadWidget static method
Widget
signaturePadWidget({
- required String labelText,
- required String signatureUnsigned,
- required Key? signaturePadKey,
- required bool canEdit,
- required dynamic signatureOnEdit()?,
- required dynamic signatureOnDone()?,
- required dynamic signatureOnClear()?,
- required String signaturePath,
- required String? validator()?,
- AutovalidateMode? autovalidateMode,
- required bool isMandatory,
- required Size size,
Implementation
static Widget signaturePadWidget({
required String labelText,
required String signatureUnsigned,
required Key? signaturePadKey,
required bool canEdit,
required dynamic Function()? signatureOnEdit,
required dynamic Function()? signatureOnDone,
required dynamic Function()? signatureOnClear,
required String signaturePath,
required String? Function(String?)? validator,
AutovalidateMode? autovalidateMode,
required bool isMandatory,
required Size size,
}) {
return FormField(
validator: validator,
builder: (field) => Column(
children: [
Container(
decoration: BoxDecoration(
border: Border.all(width: 1.0, color: Colors.black45),
borderRadius: const BorderRadius.all(Radius.circular(10.0)),
),
child: Column(
children: [
const SizedBox(
height: 10.0,
),
Text(
isMandatory ? '$labelText *' : labelText,
style: TextStyle(
color: Colors.blueGrey,
fontSize: size.width * 0.04,
fontWeight: FontWeight.w500),
),
const SizedBox(height: 20.0, child: Divider()),
canEdit
? SfSignaturePad(
key: signaturePadKey,
)
: signaturePath != '' && signaturePath.isNotEmpty
? Image.file(
File(signaturePath),
gaplessPlayback: true,
errorBuilder: (context, error, stackTrace) =>
const Padding(
padding: EdgeInsets.only(
top: 10.0,
bottom: 20.0,
),
child: Text(
'Signature is corrupted',
style: TextStyle(
fontSize: 12.0, color: Colors.grey),
),
),
)
: Padding(
padding: const EdgeInsets.only(
top: 10.0,
bottom: 20.0,
),
child: Text(
signatureUnsigned,
style: const TextStyle(
fontSize: 12.0, color: Colors.grey),
),
),
Row(children: [
if (canEdit == false)
signatureSubWidget(
label: 'Edit',
icon: Icons.edit,
onTap: signatureOnEdit,
borderRadius: const BorderRadius.only(
bottomLeft: Radius.circular(10),
)),
signatureSubWidget(
label: 'Clear',
icon: Icons.clear,
onTap: signatureOnClear,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(canEdit ? 10 : 0),
bottomRight: Radius.circular(canEdit ? 0 : 10),
)),
if (canEdit)
signatureSubWidget(
label: 'Done',
icon: Icons.done,
onTap: signatureOnDone,
borderRadius: const BorderRadius.only(
bottomRight: Radius.circular(10)))
]),
],
),
),
if (field.errorText != null)
Padding(
padding: const EdgeInsets.only(top: 10.0),
child: Text(
"${field.errorText}",
style:
TextStyle(color: Colors.red, fontSize: size.width * 0.030),
),
),
const SizedBox(
height: 10.0,
),
],
),
);
}