SendTrain/lib/widgets/generic/elements/form_text_input.dart

57 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
class FormTextInput extends StatelessWidget {
const FormTextInput(
{super.key,
required this.controller,
required this.title,
this.icon,
this.maxLines,
this.minLines,
this.onTap,
this.requiresValidation=true});
final TextEditingController controller;
final String title;
final int? maxLines;
final int? minLines;
final Icon? icon;
final dynamic onTap;
final bool requiresValidation;
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.only(top: 10, bottom: 10),
child: TextFormField(
minLines: minLines ?? 1,
maxLines: maxLines ?? 1,
controller: controller,
decoration: InputDecoration(
filled: true,
prefixIcon: icon ?? Icon(Icons.draw_rounded),
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(12)),
labelText: title,
),
validator: (String? value) {
if (requiresValidation == true) {
if (value == null || value.isEmpty) {
return 'Please enter some text';
}
if (value.length < 3) {
return 'Please enter a minimum of 3 characters';
}
}
return null;
},
onTap: () {
if (onTap != null) {
onTap();
}
}));
}
}