45 lines
1.1 KiB
Dart
45 lines
1.1 KiB
Dart
/// Labeled text field with a shared decoration used by the add-item form.
|
|
library;
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
class AppTextField extends StatelessWidget {
|
|
const AppTextField({
|
|
super.key,
|
|
required this.controller,
|
|
required this.label,
|
|
this.hint,
|
|
this.maxLines = 1,
|
|
this.textInputAction,
|
|
this.keyboardType,
|
|
this.validator,
|
|
this.autofocus = false,
|
|
});
|
|
|
|
final TextEditingController controller;
|
|
final String label;
|
|
final String? hint;
|
|
final int maxLines;
|
|
final TextInputAction? textInputAction;
|
|
final TextInputType? keyboardType;
|
|
final String? Function(String?)? validator;
|
|
final bool autofocus;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return TextFormField(
|
|
controller: controller,
|
|
maxLines: maxLines,
|
|
autofocus: autofocus,
|
|
textInputAction: textInputAction,
|
|
keyboardType: keyboardType,
|
|
validator: validator,
|
|
decoration: InputDecoration(
|
|
labelText: label,
|
|
hintText: hint,
|
|
alignLabelWithHint: maxLines > 1,
|
|
),
|
|
);
|
|
}
|
|
}
|