You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.6 KiB

2 years ago
  1. import 'package:flutter/material.dart';
  2. import 'package:my_flutter_puzzle/res/palette.dart';
  3. class NameField extends StatefulWidget {
  4. final FocusNode focusNode;
  5. final Function(String) onChange;
  6. const NameField({
  7. Key? key,
  8. required this.focusNode,
  9. required this.onChange,
  10. }) : super(key: key);
  11. @override
  12. State<NameField> createState() => _NameFieldState();
  13. }
  14. class _NameFieldState extends State<NameField> {
  15. late final TextEditingController _nameTextController;
  16. late final FocusNode _nameFocusNode;
  17. @override
  18. void initState() {
  19. super.initState();
  20. _nameTextController = TextEditingController();
  21. _nameFocusNode = widget.focusNode;
  22. }
  23. @override
  24. Widget build(BuildContext context) {
  25. return TextField(
  26. controller: _nameTextController,
  27. focusNode: _nameFocusNode,
  28. style: const TextStyle(
  29. fontSize: 24,
  30. color: Palette.crimson,
  31. ),
  32. cursorColor: Palette.violet,
  33. decoration: InputDecoration(
  34. border: const UnderlineInputBorder(),
  35. focusedBorder: const UnderlineInputBorder(
  36. borderSide: BorderSide(
  37. color: Palette.violet,
  38. width: 3,
  39. ),
  40. ),
  41. enabledBorder: UnderlineInputBorder(
  42. borderSide: BorderSide(
  43. color: Palette.violet.withOpacity(0.5),
  44. width: 2,
  45. ),
  46. ),
  47. hintText: 'Enter your name',
  48. hintStyle: TextStyle(
  49. fontSize: 22,
  50. color: Palette.violet.withOpacity(0.2),
  51. ),
  52. ),
  53. onChanged: (value) => widget.onChange(value),
  54. );
  55. }
  56. }