Flutter日期选择器插件flutter_cupertino_date_picker的使用

发布于 1周前 作者 wuwangju 来自 Flutter

Flutter日期选择器插件flutter_cupertino_date_picker的使用

简介

flutter_cupertino_date_picker 是一个用于在 Flutter 应用中实现日期选择器(Date Picker)、时间选择器(Time Picker)以及日期时间选择器(DateTime Picker)的插件。支持多种语言和自定义主题。


使用步骤

1. 添加依赖

pubspec.yaml 文件中添加以下依赖项:

dependencies:
  flutter_cupertino_date_picker: ^1.0.26+2

运行以下命令安装依赖:

$ flutter pub get

2. 导入库

在 Dart 文件中导入 flutter_cupertino_date_picker

import 'package:flutter_cupertino_date_picker/flutter_cupertino_date_picker.dart';

3. 显示日期选择器
(1)底部弹出式日期选择器 (showDatePicker)

以下是使用 showDatePicker 的完整示例:

void showBottomSheetDatePicker(BuildContext context) async {
  await DatePicker.showDatePicker(
    context,
    // 最小日期
    minDateTime: DateTime(1990, 1, 1),
    // 最大日期
    maxDateTime: DateTime.now(),
    // 初始选中日期
    initialDateTime: DateTime.now(),
    // 日期格式
    dateFormat: "yyyy-MM-dd",
    // 国际化设置(如 zh_cn)
    locale: DateTimePickerLocale.zh_cn,
    // 确认回调
    onConfirm: (dateTime, index) {
      print("Selected Date: $dateTime");
    },
    // 取消回调
    onCancel: () {
      print("Date Picker Canceled");
    },
  );
}

(2)嵌入页面的日期选择器 (DatePickerWidget)

如果需要将日期选择器直接嵌入到页面中,可以使用 DatePickerWidget

class DatePickerInPage extends StatefulWidget {
  [@override](/user/override)
  _DatePickerInPageState createState() => _DatePickerInPageState();
}

class _DatePickerInPageState extends State<DatePickerInPage> {
  DateTime _selectedDate;

  void _showDatePicker() async {
    final DateTime picked = await showDatePicker(
      context: context,
      initialDate: DateTime.now(),
      firstDate: DateTime(1990),
      lastDate: DateTime(2050),
    );

    if (picked != null && picked != _selectedDate) {
      setState(() {
        _selectedDate = picked;
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("嵌入页面的日期选择器")),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_selectedDate == null ? "请选择日期" : _selectedDate.toString()),
            ElevatedButton(
              onPressed: _showDatePicker,
              child: Text("选择日期"),
            ),
          ],
        ),
      ),
    );
  }
}

4. 显示时间选择器
(1)底部弹出式时间选择器 (showTimePicker)

以下是如何使用 showTimePicker 的示例:

void showBottomSheetTimePicker(BuildContext context) async {
  await DatePicker.showTimePicker(
    context,
    minDateTime: DateTime(2023, 1, 1, 0, 0),
    maxDateTime: DateTime(2023, 1, 1, 23, 59),
    initialDateTime: DateTime(2023, 1, 1, 12, 0),
    dateFormat: "HH:mm",
    locale: DateTimePickerLocale.zh_cn,
    onConfirm: (dateTime, index) {
      print("Selected Time: $dateTime");
    },
    onCancel: () {
      print("Time Picker Canceled");
    },
  );
}

(2)嵌入页面的时间选择器 (TimePickerWidget)

同样可以将时间选择器嵌入到页面中:

class TimePickerInPage extends StatefulWidget {
  [@override](/user/override)
  _TimePickerInPageState createState() => _TimePickerInPageState();
}

class _TimePickerInPageState extends State<TimePickerInPage> {
  TimeOfDay _selectedTime;

  Future<void> _showTimePicker() async {
    final TimeOfDay picked = await showTimePicker(
      context: context,
      initialTime: TimeOfDay.now(),
    );

    if (picked != null && picked != _selectedTime) {
      setState(() {
        _selectedTime = picked;
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("嵌入页面的时间选择器")),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_selectedTime == null ? "请选择时间" : _selectedTime.format(context).toString()),
            ElevatedButton(
              onPressed: _showTimePicker,
              child: Text("选择时间"),
            ),
          ],
        ),
      ),
    );
  }
}

5. 显示日期时间选择器
(1)底部弹出式日期时间选择器 (showDateTimePicker)

以下是如何使用 showDateTimePicker 的示例:

void showBottomSheetDateTimePicker(BuildContext context) async {
  await DatePicker.showDateTimePicker(
    context,
    minDateTime: DateTime(1990, 1, 1),
    maxDateTime: DateTime.now(),
    initialDateTime: DateTime.now(),
    dateFormat: "yyyy-MM-dd HH:mm",
    locale: DateTimePickerLocale.zh_cn,
    onConfirm: (dateTime, index) {
      print("Selected DateTime: $dateTime");
    },
    onCancel: () {
      print("DateTime Picker Canceled");
    },
  );
}

(2)嵌入页面的日期时间选择器 (DateTimePickerWidget)

也可以将日期时间选择器嵌入到页面中:

class DateTimePickerInPage extends StatefulWidget {
  [@override](/user/override)
  _DateTimePickerInPageState createState() => _DateTimePickerInPageState();
}

class _DateTimePickerInPageState extends State<DateTimePickerInPage> {
  DateTime _selectedDateTime;

  Future<void> _showDateTimePicker() async {
    final DateTime picked = await showDatePicker(
      context: context,
      initialDate: DateTime.now(),
      firstDate: DateTime(1990),
      lastDate: DateTime(2050),
    );

    if (picked != null) {
      setState(() {
        _selectedDateTime = picked;
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("嵌入页面的日期时间选择器")),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_selectedDateTime == null ? "请选择日期时间" : _selectedDateTime.toString()),
            ElevatedButton(
              onPressed: _showDateTimePicker,
              child: Text("选择日期时间"),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter日期选择器插件flutter_cupertino_date_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter日期选择器插件flutter_cupertino_date_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_cupertino_date_picker 是一个 Flutter 插件,用于显示 iOS 风格的日期选择器。它模仿了 iOS 的 UIDatePicker,提供了流畅的滚动体验和良好的用户体验。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 flutter_cupertino_date_picker 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_cupertino_date_picker: ^1.0.26+2

然后运行 flutter pub get 来安装依赖。

使用插件

以下是一个简单的示例,展示了如何使用 flutter_cupertino_date_picker 插件来选择日期。

import 'package:flutter/material.dart';
import 'package:flutter_cupertino_date_picker/flutter_cupertino_date_picker.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DatePickerExample(),
    );
  }
}

class DatePickerExample extends StatefulWidget {
  [@override](/user/override)
  _DatePickerExampleState createState() => _DatePickerExampleState();
}

class _DatePickerExampleState extends State<DatePickerExample> {
  DateTime _selectedDate = DateTime.now();

  void _showDatePicker() {
    DatePicker.showDatePicker(
      context,
      minDateTime: DateTime(2000),
      maxDateTime: DateTime(2100),
      initialDateTime: _selectedDate,
      dateFormat: 'yyyy-MM-dd',
      locale: DateTimePickerLocale.en_us,
      onConfirm: (dateTime, List<int> index) {
        setState(() {
          _selectedDate = dateTime;
        });
      },
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Date Picker Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Selected Date: ${_selectedDate.toString()}',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _showDatePicker,
              child: Text('Pick Date'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!