shadcn_ui-date-picker
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseShadcn UI — Date Picker
Shadcn UI — 日期选择器
Instructions
使用说明
ShadDatePickerShadDatePicker.range()ShadDatePickerFormFieldShadDateRangePickerFormFieldidlabelvalidatorfromValueTransformertoValueTransformerShadDatePickerShadDatePicker.range()idlabelvalidatorfromValueTransformertoValueTransformerShadDatePickerFormFieldShadDateRangePickerFormFieldSingle
单个日期选择
dart
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 600),
child: const ShadDatePicker(),
)dart
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 600),
child: const ShadDatePicker(),
)Range
日期范围选择
dart
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 600),
child: const ShadDatePicker.range(),
)dart
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 600),
child: const ShadDatePicker.range(),
)With presets
带预设功能
Use a widget (e.g. ) and shared so the date picker popover stays open when the select popover closes. Set from preset choice (e.g. today + days offset).
headerShadSelectgroupIdselecteddart
ShadDatePicker(
groupId: groupId,
header: Padding(
padding: const EdgeInsets.only(bottom: 4),
child: ShadSelect<int>(
groupId: groupId,
minWidth: 276,
placeholder: const Text('Select'),
options: presets.entries
.map((e) => ShadOption(value: e.key, child: Text(e.value)))
.toList(),
selectedOptionBuilder: (context, value) => Text(presets[value]!),
onChanged: (value) {
if (value == null) return;
setState(() => selected = today.add(Duration(days: value)));
},
),
),
selected: selected,
calendarDecoration: theme.calendarTheme.decoration,
popoverPadding: const EdgeInsets.all(4),
)使用组件(例如)并设置共享的,这样当选择器弹窗关闭时,日期选择器的弹窗仍会保持打开状态。根据预设选项设置值(例如今日加上指定天数偏移)。
headerShadSelectgroupIdselecteddart
ShadDatePicker(
groupId: groupId,
header: Padding(
padding: const EdgeInsets.only(bottom: 4),
child: ShadSelect<int>(
groupId: groupId,
minWidth: 276,
placeholder: const Text('Select'),
options: presets.entries
.map((e) => ShadOption(value: e.key, child: Text(e.value)))
.toList(),
selectedOptionBuilder: (context, value) => Text(presets[value]!),
onChanged: (value) {
if (value == null) return;
setState(() => selected = today.add(Duration(days: value)));
},
),
),
selected: selected,
calendarDecoration: theme.calendarTheme.decoration,
popoverPadding: const EdgeInsets.all(4),
)Form fields
表单字段
dart
ShadDatePickerFormField(
label: const Text('Date of birth'),
onChanged: print,
description: const Text('Your date of birth is used to calculate your age.'),
validator: (v) {
if (v == null) return 'A date of birth is required.';
return null;
},
)
ShadDateRangePickerFormField(
label: const Text('Range of dates'),
onChanged: print,
description: const Text('Select the range of dates you want to search between.'),
validator: (v) {
if (v == null) return 'A range of dates is required.';
if (v.start == null) return 'The start date is required.';
if (v.end == null) return 'The end date is required.';
return null;
},
)For form initial value as string (e.g. ), use and on to convert to/from . See reference.md or the Form skill for value transformers.
'date': '2024-02-01'fromValueTransformertoValueTransformerShadDatePickerFormFieldDateTimedart
ShadDatePickerFormField(
label: const Text('Date of birth'),
onChanged: print,
description: const Text('Your date of birth is used to calculate your age.'),
validator: (v) {
if (v == null) return 'A date of birth is required.';
return null;
},
)
ShadDateRangePickerFormField(
label: const Text('Range of dates'),
onChanged: print,
description: const Text('Select the range of dates you want to search between.'),
validator: (v) {
if (v == null) return 'A range of dates is required.';
if (v.start == null) return 'The start date is required.';
if (v.end == null) return 'The end date is required.';
return null;
},
)如果表单初始值为字符串格式(例如),可在上使用和实现与格式的相互转换。有关值转换器的详情,请查看reference.md或Form技能文档。
'date': '2024-02-01'ShadDatePickerFormFieldfromValueTransformertoValueTransformerDateTime