dateTimeScrollPicker method

Widget dateTimeScrollPicker(
  1. BuildContext context,
  2. List<DateTime> dates,
  3. List<TimeOfDay> times, {
  4. required dynamic onDateSelected(
    1. DateTime dateSelected
    ),
  5. required dynamic onTimeSelected(
    1. TimeOfDay timeSelected
    ),
  6. String todayString = 'Avui',
  7. String tomorrowString = 'Demà',
  8. double pickerHeight = 180,
})

Implementation

Widget dateTimeScrollPicker(
    BuildContext context, List<DateTime> dates, List<TimeOfDay> times,
    {required Function(DateTime dateSelected) onDateSelected,
    required Function(TimeOfDay timeSelected) onTimeSelected,
    String todayString = 'Avui',
    String tomorrowString = 'Demà',
    double pickerHeight = 180}) {
  return SizedBox(
      height: pickerHeight,
      child: Row(children: [
        Expanded(
            child: CupertinoPicker(
          onSelectedItemChanged: (int value) {
            onDateSelected(dates[value]);
          },
          itemExtent: 48,
          children: List.generate(dates.length, (index) {
            return SizedBox(
              height: 48,
              child: Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Utils.isToday(dates[index])
                        ? DUI.text.xs(context, todayString,
                            color: Theme.of(context)
                                .textTheme
                                .bodyMedium!
                                .color!
                                .withOpacity(0.7))
                        : Utils.isTomorrow(dates[index])
                            ? DUI.text.xs(context, tomorrowString,
                                color: Theme.of(context)
                                    .textTheme
                                    .bodyMedium!
                                    .color!
                                    .withOpacity(0.7))
                            : SizedBox.shrink(),
                    DUI.text.title3(context, Utils.formatDate(dates[index]))
                  ],
                ),
              ),
            );
          }),
        )),
        DUI.spacing.hSpacer(),
        Expanded(
            child: CupertinoPicker(
          onSelectedItemChanged: (int value) {
            onTimeSelected(times[value]);
          },
          itemExtent: 48,
          children: List.generate(times.length, (index) {
            return SizedBox(
              height: 48,
              child: Center(
                child: DUI.text
                    .title3(context, '${times[index].format(context)} h'),
              ),
            );
          }),
        ))
      ]));
}