date picker button component

This commit is contained in:
MohammadTaha Basiri 2022-01-06 16:04:28 +03:30
parent eca4f56ad4
commit 57f2656416
1 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,68 @@
import 'package:didvan/config/design_config.dart';
import 'package:didvan/config/theme_data.dart';
import 'package:didvan/utils/date_time.dart';
import 'package:didvan/widgets/didvan/text.dart';
import 'package:flutter/material.dart';
import 'package:persian_number_utility/persian_number_utility.dart';
class DatePickerButton extends StatefulWidget {
final String? initialValue;
final String? emptyText;
final void Function(String? date) onPicked;
final String? firstDate;
final String? lastDate;
const DatePickerButton({
Key? key,
this.initialValue,
required this.onPicked,
this.firstDate,
this.lastDate,
this.emptyText,
}) : super(key: key);
@override
State<DatePickerButton> createState() => _DatePickerButtonState();
}
class _DatePickerButtonState extends State<DatePickerButton> {
String? pickedDate;
@override
void initState() {
pickedDate = widget.initialValue;
super.initState();
}
@override
Widget build(BuildContext context) {
return Expanded(
child: GestureDetector(
onTap: () async {
pickedDate = await DateTimeUtils.showDatePicker(
initialDate: pickedDate,
startDate: widget.firstDate,
endDate: widget.lastDate,
);
if (pickedDate == null) {
return;
}
setState(() {});
widget.onPicked(pickedDate);
},
child: Container(
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.splash,
borderRadius: DesignConfig.lowBorderRadius,
border: Border.all(color: Theme.of(context).colorScheme.border),
),
child: DidvanText(
pickedDate == null
? widget.emptyText ?? 'تاریخ'
: pickedDate!.toPersianDate(),
),
),
),
);
}
}