documentWidget static method
Widget
documentWidget(
{ - required String labelText,
- required dynamic document,
- required String noDocument,
- required dynamic documentPickerOnTap()?,
- required String? validator(
- String?
)?,
- bool isMandatory = false,
- AutovalidateMode? autovalidateMode,
- required Size size,
})
Implementation
static Widget documentWidget({
required String labelText,
required dynamic document,
required String noDocument,
required dynamic Function()? documentPickerOnTap,
required String? Function(String?)? validator,
bool isMandatory = false,
AutovalidateMode? autovalidateMode,
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),
),
GestureDetector(
onTap: () async {
await PackageRelated.openFile(
filePath: document, size: size);
},
child: Container(
// height: Get.height / 20,
margin: const EdgeInsets.all(10.0),
padding: const EdgeInsets.all(10.0),
decoration: BoxDecoration(
color: Colors.blue.shade50,
borderRadius:
const BorderRadius.all(Radius.circular(10.0)),
),
child: document != null && document.toString().trim() != ''
? Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Icon(
Icons.insert_drive_file_rounded,
color: Colors.black54,
size: 18.0,
),
const SizedBox(
width: 5.0,
),
Flexible(
child: Text(
OtherFunctions.getFileName(file: document),
maxLines: 2,
style: TextStyle(
color: Colors.black,
fontSize: size.width * 0.035,
),
),
),
],
)
: Text(
noDocument,
style: TextStyle(
color: Colors.grey.shade500,
fontSize: size.width * 0.035,
),
),
),
),
GestureDetector(
onTap: documentPickerOnTap,
child: Container(
width: double.infinity,
decoration: BoxDecoration(
color: ColorFile.primaryColor,
border: Border.all(
color: ColorFile.primaryColor,
),
borderRadius: const BorderRadius.only(
bottomLeft: Radius.circular(10),
bottomRight: Radius.circular(10))),
padding: const EdgeInsets.only(top: 8.0, bottom: 8.0),
child: const Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Pick Document',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
SizedBox(
width: 5.0,
),
Icon(
Icons.folder,
color: Colors.white,
size: 20,
),
],
),
),
),
],
),
),
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,
),
],
),
);
}