You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter待办App:如何实现滚轮式美观日期选择器?

实现滚轮式日期选择器的几种实用方案

方案一:用Flutter自带CupertinoDatePicker(iOS风格滚轮)

想要原生iOS风格的滚轮日期选择器,直接用CupertinoDatePicker配合底部弹窗就能实现,示例代码如下:

ElevatedButton(
  onPressed: () {
    showModalBottomSheet(
      context: context,
      builder: (context) {
        return Container(
          height: 250,
          child: CupertinoDatePicker(
            initialDateTime: DateTime(2022, 5, 5),
            minimumDate: DateTime(1922, 4, 4),
            maximumDate: DateTime(2122, 7, 7),
            mode: CupertinoDatePickerMode.date, // 可选date、time、dateAndTime三种模式
            onDateTimeChanged: (DateTime newDate) {
              // 处理选中的日期
              print(newDate);
            },
          ),
        );
      },
    );
  },
  child: Text('选择日期'),
)

这个组件默认就是滚轮样式,不仅适配iOS,在Android上也能正常显示滚轮效果,视觉风格统一。

方案二:第三方库实现高度自定义滚轮

如果需要调整滚轮颜色、文字大小等细节,可使用flutter_picker库(直接在pubspec.yaml添加依赖即可),示例代码:

先在pubspec.yaml中添加依赖:

dependencies:
  flutter_picker: ^2.1.0

然后实现选择器:

ElevatedButton(
  onPressed: () {
    Picker(
      adapter: DateTimePickerAdapter(
        type: PickerDateTimeType.kYMD,
        yearBegin: 1922,
        yearEnd: 2122,
        value: DateTime(2022, 5, 5),
      ),
      title: Text('选择日期'),
      onConfirm: (Picker picker, List<int> value) {
        DateTime selectedDate = (picker.adapter as DateTimePickerAdapter).value;
        print(selectedDate);
      },
    ).showDialog(context);
  },
  child: Text('选择日期'),
)

这个库支持自定义滚轮样式、分隔线、文字格式等,完全满足美观性需求。

方案三:修改默认DatePickerDialog为滚轮样式(Android适配)

如果想保留Android平台风格,同时改成滚轮样式,可通过Theme组件修改默认样式:

ElevatedButton(
  onPressed: () {
    showDialog(
      context: context,
      builder: (context) {
        return Theme(
          data: Theme.of(context).copyWith(
            datePickerTheme: DatePickerThemeData(
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(16),
              ),
              backgroundColor: Colors.white,
              // 可根据需求调整更多样式参数
            ),
          ),
          child: DatePickerDialog(
            initialDate: DateTime(2022, 5, 5),
            firstDate: DateTime(1922, 4, 4),
            lastDate: DateTime(2122, 7, 7),
          ),
        );
      },
    );
  },
  child: Text('选择日期'),
)

注:Android系统版本不同,默认DatePicker样式可能有差异,通过DatePickerThemeData可强制调整为滚轮模式。

内容的提问来源于stack exchange,提问作者saba omer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:15:31