Register Impl

This commit is contained in:
efrilm
2025-09-18 08:48:36 +07:00
parent cee78e179b
commit 0ea1a6fa56
13 changed files with 265 additions and 108 deletions
@@ -0,0 +1,59 @@
part of 'field.dart';
class DatePickerField extends StatefulWidget {
final String label;
final DateTime? selectedDate;
final Function(DateTime) onDateSelected;
const DatePickerField({
super.key,
required this.label,
required this.onDateSelected,
this.selectedDate,
});
@override
State<DatePickerField> createState() => _DatePickerFieldState();
}
class _DatePickerFieldState extends State<DatePickerField> {
DateTime? _selectedDate;
@override
void initState() {
super.initState();
_selectedDate = widget.selectedDate;
}
Future<void> _selectDate() async {
final picked = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2000),
lastDate: DateTime(2050),
);
if (picked != null && picked != _selectedDate) {
setState(() {
_selectedDate = picked;
});
widget.onDateSelected(picked);
}
}
@override
Widget build(BuildContext context) {
return AppTextFormField(
title: widget.label,
hintText: 'Pilih tanggal',
readOnly: true,
controller: TextEditingController(text: _selectedDate?.toServerDate),
onChanged: (value) {
widget.onDateSelected(_selectedDate!);
},
onTap: () {
_selectDate();
},
);
}
}
@@ -1,7 +1,10 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import '../../../common/extension/extension.dart';
import '../../../common/theme/theme.dart';
part 'text_form_field.dart';
part 'search_text_form_field.dart';
part 'password_text_form_page.dart';
part 'date_text_form_field.dart';
@@ -12,6 +12,8 @@ class AppTextFormField extends StatelessWidget {
this.keyboardType,
this.onChanged,
this.validator,
this.readOnly = false,
this.onTap,
});
final String? hintText;
@@ -23,6 +25,8 @@ class AppTextFormField extends StatelessWidget {
final TextInputType? keyboardType;
final ValueChanged<String>? onChanged;
final String? Function(String?)? validator;
final bool readOnly;
final Function()? onTap;
@override
Widget build(BuildContext context) {
@@ -42,6 +46,8 @@ class AppTextFormField extends StatelessWidget {
fontWeight: FontWeight.w500,
),
validator: validator,
onTap: onTap,
readOnly: readOnly,
decoration: InputDecoration(
hintText: hintText,
prefixIcon: prefixIcon,