You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RSGDoctorApp/lib/widgets/shared/app_text_form_field.dart

93 lines
3.6 KiB
Dart

import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hexcolor/hexcolor.dart';
// OWNER : Ibrahim albitar
// DATE : 19-04-2020
// DESCRIPTION : Custom Text Form Field for app.
class AppTextFormField extends FormField<String> {
AppTextFormField(
{FormFieldSetter<String> onSaved,
String inputFormatter,
FormFieldValidator<String> validator,
ValueChanged<String> onChanged,
GestureTapCallback onTap,
TextEditingController controller,
bool autovalidate = true,
TextInputType textInputType,
String hintText,
FocusNode focusNode,
TextInputAction textInputAction,
ValueChanged<String> onFieldSubmitted,
IconButton prefix,
String labelText,
bool readOnly = false,
borderColor})
: super(
onSaved: onSaved,
validator: validator,
autovalidate: autovalidate,
builder: (FormFieldState<String> state) {
return Column(
children: <Widget>[
SizedBox(
height: 40.0,
child: TextFormField(
focusNode: focusNode,
keyboardType: textInputType,
inputFormatters: [
FilteringTextInputFormatter.allow(
RegExp(inputFormatter)),
],
onChanged: onChanged ??
(value) {
state.didChange(value);
},
textInputAction: textInputAction,
onFieldSubmitted: onFieldSubmitted,
decoration: InputDecoration(
hintText: hintText,
suffixIcon: prefix,
hintStyle: TextStyle(
fontSize: SizeConfig.textMultiplier * 1.8,
),
contentPadding:
EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 0.0),
labelText: labelText,
labelStyle: TextStyle(
fontSize: SizeConfig.textMultiplier * 1.7,
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(6)),
borderSide: BorderSide(
color: borderColor != null
? borderColor
: HexColor("#CCCCCC")),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: borderColor != null
? borderColor
: HexColor("#CCCCCC")),
borderRadius: BorderRadius.all(Radius.circular(6)),
)
//BorderRadius.all(Radius.circular(20));
),
onTap: onTap,
controller: controller,
),
),
state.hasError
? Text(
state.errorText,
style: TextStyle(color: Colors.red),
)
: Container()
],
);
});
}