import 'package:flutter/material.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; class ATimePicker extends StatelessWidget { final TimeOfDay time; final String label; final String hint; final Function(TimeOfDay) onTimePicker; final bool enable, withBorder; final Color backgroundColor; final double height; const ATimePicker({ Key key, @required this.label, this.withBorder = true, this.height, this.backgroundColor, this.hint, this.time, this.onTimePicker, this.enable = true, }) : super(key: key); @override Widget build(BuildContext context) { print('initial time in picker is $time'); return Container( height:height, decoration: BoxDecoration( color: backgroundColor ?? (context.isDark && (enable == false) ? AppColor.neutral50 : (enable == false) ? AppColor.neutral40 : AppColor.background(context)), borderRadius: BorderRadius.circular(10), border: withBorder ? Border.all(width: 1, color: Theme.of(context).scaffoldBackgroundColor) : const Border(), boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], ), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), child: Row( children: [ // enable // ? Column( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisSize: MainAxisSize.min, children: [ label.tinyFont(context), (time == null ?hint?? context.translation.pickTime : (time.format(context)?? context.translation.pickADate)) .bodyText(context) .custom(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), ], ).expanded, //: label.bodyText(context).paddingOnly(top: 8, bottom: 8), enable ? 16.width : const Spacer(), "calender".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null), ], ), ).onPress(enable ? () async { // Define the initial time TimeOfDay initialTime = TimeOfDay.now(); // Show the time picker with the initial time set TimeOfDay pickedTime = await showTimePicker( context: context, initialTime: initialTime, ); // Handle the selected time (if user didn't cancel) if (pickedTime != null) { if (onTimePicker != null) onTimePicker(pickedTime); print("Selected time: ${pickedTime.format(context)}"); } } : null); } }