Files
workavia-mail-front/lib/features/base/widget/text_input_field_builder.dart
T
dab246 df19b979a2 TF-1884 Support RTL mode for TextField
(cherry picked from commit 3f8445141bea9dbf276a6a336114e4e2b549936f)
2023-06-15 16:43:58 +07:00

69 lines
2.1 KiB
Dart

import 'package:core/core.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/features/base/widget/text_input_decoration_builder.dart';
typedef OnChangeInputAction = Function(String value);
class TextInputFieldBuilder extends StatelessWidget {
final String? label;
final String? error;
final String? hint;
final TextEditingController? editingController;
final FocusNode? focusNode;
final TextInputType? inputType;
final bool isMandatory;
final int? minLines;
final int? maxLines;
final Color? backgroundColor;
final OnChangeInputAction? onChangeInputAction;
const TextInputFieldBuilder({
Key? key,
this.label,
this.hint,
this.error,
this.isMandatory = false,
this.editingController,
this.focusNode,
this.inputType,
this.minLines,
this.maxLines,
this.backgroundColor,
this.onChangeInputAction,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
if (label != null)
...[
Text(isMandatory ? '${label!}*' : label!,
style: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.normal,
color: AppColor.colorContentEmail)),
const SizedBox(height: 8)
],
TextFieldBuilder(
onTextChange: onChangeInputAction,
textInputAction: TextInputAction.next,
controller: editingController,
focusNode: focusNode,
textStyle: const TextStyle(color: Colors.black, fontSize: 16),
keyboardType: inputType ?? TextInputType.text,
textDirection: DirectionUtils.getDirectionByLanguage(context),
minLines: minLines,
maxLines: maxLines,
decoration: (TextInputDecorationBuilder()
..setContentPadding(const EdgeInsets.symmetric(vertical: PlatformInfo.isWeb ? 16 : 12, horizontal: 12))
..setHintText(hint)
..setFillColor(backgroundColor)
..setErrorText(error))
.build(),
)
]);
}
}