input.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import 'package:flutter/material.dart';
  2. class VInput extends StatelessWidget {
  3. final String? placeholder;
  4. final String? initialValue;
  5. final TextEditingController? controller;
  6. final FocusNode? focusNode;
  7. final ValueChanged<String>? onChanged;
  8. const VInput({
  9. super.key,
  10. this.initialValue,
  11. this.controller,
  12. this.focusNode,
  13. this.placeholder,
  14. this.onChanged,
  15. });
  16. @override
  17. Widget build(BuildContext context) {
  18. final c = controller ?? TextEditingController(text: initialValue);
  19. const borderRadius = BorderRadius.all(Radius.zero);
  20. return TextField(
  21. controller: c,
  22. textAlign: TextAlign.start,
  23. textAlignVertical: TextAlignVertical.center,
  24. decoration: InputDecoration(
  25. enabledBorder: const OutlineInputBorder(
  26. borderRadius: borderRadius,
  27. borderSide: BorderSide(color: Colors.grey),
  28. ),
  29. focusedBorder: OutlineInputBorder(
  30. borderRadius: borderRadius,
  31. borderSide: BorderSide(color: Theme.of(context).primaryColor),
  32. ),
  33. errorBorder: OutlineInputBorder(
  34. borderRadius: borderRadius,
  35. borderSide: BorderSide(color: Theme.of(context).colorScheme.error),
  36. ),
  37. // errorText: "112323",
  38. errorMaxLines: 1,
  39. fillColor: Colors.white,
  40. filled: true,
  41. hintText: placeholder,
  42. hintStyle: const TextStyle(
  43. fontSize: 16,
  44. color: Colors.black54,
  45. ),
  46. contentPadding: const EdgeInsets.symmetric(horizontal: 8, vertical: 0),
  47. // isDense: true,
  48. isCollapsed: false,
  49. ),
  50. onChanged: (value) {
  51. onChanged?.call(value);
  52. },
  53. );
  54. }
  55. }