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

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

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

date_cupertino_bottom_sheet_picker 是一个基于 Cupertino 风格的日期选择器插件,允许用户设置年龄限制。本文将详细介绍如何在 Flutter 应用中使用该插件。

Features (功能)

  • 提供多种日期选择模式(如 Gregorian 和 Persian)
  • 支持时间选择
  • 可自定义最小和最大日期范围
  • 设置最小年龄限制

示例图片

SheetPicker

Getting Started (开始使用)

首先,在您的 pubspec.yaml 文件中添加依赖:

dependencies:
  date_cupertino_bottom_sheet_picker: ^0.0.5

然后运行 flutter pub get 来安装插件。接下来导入包:

import 'package:date_cupertino_bottom_sheet_picker/date_cupertino_bottom_sheet_picker.dart';

使用示例

以下是一个完整的示例代码,展示了如何使用 DateCupertinoBottomSheetPicker 组件:

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const Home(),
    );
  }
}

class Home extends StatelessWidget {
  const Home({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    DateTime? selectedDate = DateTime(2010, 12, 5);
    return Scaffold(
      appBar: AppBar(
        title: const Text('Home'),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Center(
            child: SizedBox(
              width: MediaQuery.of(context).size.width * 0.9,
              child: DateCupertinoBottomSheetPicker(
                minWidth: 1.0,
                firstDate: DateTime(1990),
                lastDate: DateTime.now(),
                selectedDate: selectedDate,
                minAge: 18,
                textFieldDecoration: TextFieldDecoration(),
                onTimeChanged: (dateTime, formattedDate, formattedDateWithDay) {
                  print("dateTime: $dateTime, formattedDate: $formattedDate, formattedDateWithDay: $formattedDateWithDay");
                },
              ),
            ),
          )
        ],
      ),
    );
  }
}

其他日期选择模式

Persian Date Picker with Time Picker

DateCupertinoBottomSheetPicker.dateTimePickerPersian(
  minWidth: 0.9,
  onDateAndTimeChanged: (dateTime, formattedDate, formattedDateWithDay, timeOfDay, timeOfDayString, timeOfDayPersianString) {
    print("dateTime: $dateTime, formattedDate: $formattedDate, formattedDateWithDay: $formattedDateWithDay, timeOfDay: $timeOfDay, timeOfDayString: $timeOfDayString , timeOfDayPersianString: $timeOfDayPersianString");
  },
)

Persian Date Picker

DateCupertinoBottomSheetPicker.datePickerPersian(
  minWidth: 0.9,
  onChanged: (dateTime, formattedDate, formattedDateWithDay) {
    print("dateTime: $dateTime, formattedDate: $formattedDate, formattedDateWithDay: $formattedDateWithDay");
  },
)

Gregorian Date Picker with Time Picker

DateCupertinoBottomSheetPicker.dateTimePickerGregorian(
  minWidth: 0.9,
  onTimeChanged: (dateTime, formattedDate, formattedDateWithDay) {
    print("dateTime: $dateTime, formattedDate: $formattedDate, formattedDateWithDay: $formattedDateWithDay");
  },
)

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

1 回复

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


当然,以下是如何在Flutter项目中使用date_cupertino_bottom_sheet_picker插件的示例代码。这个插件提供了一个类似于iOS风格的日期选择器,以底部工作表(Bottom Sheet)的形式展现。

首先,确保你已经在pubspec.yaml文件中添加了依赖:

dependencies:
  flutter:
    sdk: flutter
  date_cupertino_bottom_sheet_picker: ^最新版本号 # 请替换为最新的版本号

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

接下来,在你的Flutter项目中,你可以按照以下步骤使用日期选择器:

1. 导入插件

在你的Dart文件中导入插件:

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

2. 使用日期选择器

创建一个按钮,点击按钮时显示日期选择器。以下是一个完整的示例:

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  DateTime selectedDate = DateTime.now();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Date Cupertino Bottom Sheet Picker Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Selected Date: ${selectedDate.toLocal()}',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                final DateTime? pickedDate = await showCupertinoDatePickerBottomSheet(
                  context: context,
                  initialDateTime: selectedDate,
                  firstDate: DateTime(1900),
                  lastDate: DateTime(2100),
                  locale: Localizations.localeOf(context),
                );
                if (pickedDate != null && pickedDate != selectedDate) {
                  setState(() {
                    selectedDate = pickedDate;
                  });
                }
              },
              child: Text('Select Date'),
            ),
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 导入必要的包

    • date_cupertino_bottom_sheet_picker:用于日期选择器。
    • flutter/material.dart:用于Flutter的基础UI组件。
  2. 创建应用

    • MyApp是一个无状态组件,它定义了应用的主题和主页。
  3. 主页

    • MyHomePage是一个有状态组件,它维护了选中的日期状态。
    • build方法中,我们创建了一个包含文本和按钮的列。文本显示当前选中的日期,按钮用于打开日期选择器。
  4. 日期选择器

    • 使用showCupertinoDatePickerBottomSheet函数显示日期选择器。
    • 该函数返回用户选择的日期,如果用户选择了一个日期并且该日期与当前选中的日期不同,则更新状态。

这样,你就可以在Flutter应用中集成并使用date_cupertino_bottom_sheet_picker插件来选择日期了。

回到顶部