Flutter日期时间选择器插件daymoonpicker的使用

Flutter日期时间选择器插件daymoonpicker的使用

daymoonpicker 是一个简单的日期和时间选择器插件。以下是其使用方法及完整的示例代码。

使用方法

引入依赖

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

dependencies:
  daymoonpicker: ^x.x.x

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

示例代码

import 'package:daymoonpicker/lib/constants.dart';
import 'package:daymoonpicker/lib/daynight_timepicker.dart';
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: '时间选择器',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const Home(),
    );
  }
}

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

  [@override](/user/override)
  // ignore: library_private_types_in_public_api
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  TimeOfDay _time = TimeOfDay.now().replacing(hour: 11, minute: 30);
  bool iosStyle = true;

  void onTimeChanged(TimeOfDay newTime) {
    setState(() {
      _time = newTime;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Center(
          child: SingleChildScrollView(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text(
                  "弹出式选择器样式",
                  style: Theme.of(context).textTheme.headline6,
                ),
                Text(
                  _time.format(context),
                  textAlign: TextAlign.center,
                  style: Theme.of(context).textTheme.headline1,
                ),
                const SizedBox(height: 10),
                TextButton(
                  style: TextButton.styleFrom(
                    backgroundColor: Theme.of(context).colorScheme.secondary,
                  ),
                  onPressed: () {
                    Navigator.of(context).push(
                      showPicker(
                        context: context,
                        value: _time,
                        onChange: onTimeChanged,
                        minuteInterval: MinuteInterval.FIVE,
                        // 可选参数,接收DateTime值
                        onChangeDateTime: (DateTime dateTime) {
                          // print(dateTime);
                          debugPrint("[调试日期时间]:  $dateTime");
                        },
                      ),
                    );
                  },
                  child: const Text(
                    "打开时间选择器",
                    style: TextStyle(color: Colors.white),
                  ),
                ),
                const SizedBox(height: 10),
                const Divider(),
                const SizedBox(height: 10),
                Text(
                  "内联选择器样式",
                  style: Theme.of(context).textTheme.headline6,
                ),
                // 渲染内联组件
                createInlinePicker(
                  elevation: 1,
                  value: _time,
                  onChange: onTimeChanged,
                  minuteInterval: MinuteInterval.FIVE,
                  iosStylePicker: iosStyle,
                  minHour: 9,
                  maxHour: 21,
                  is24HrFormat: false,
                ),
                Text(
                  "iOS样式",
                  style: Theme.of(context).textTheme.bodyText1,
                ),
                Switch(
                  value: iosStyle,
                  onChanged: (newVal) {
                    setState(() {
                      iosStyle = newVal;
                    });
                  },
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


daymoonpicker 是 Flutter 中一个用于选择日期和时间的插件。它提供了一个美观且易于使用的界面,支持日期、时间以及日期时间的选择。以下是如何在 Flutter 项目中使用 daymoonpicker 插件的步骤。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  daymoonpicker: ^1.0.0  # 请使用最新版本

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

2. 导入包

在需要使用 daymoonpicker 的 Dart 文件中导入包:

import 'package:daymoonpicker/daymoonpicker.dart';

3. 使用 DayMoonPicker

DayMoonPicker 提供了多种选择器,包括日期选择器、时间选择器以及日期时间选择器。以下是使用这些选择器的示例。

日期选择器

DateTime selectedDate = DateTime.now();

void _showDatePicker(BuildContext context) async {
  final DateTime? picked = await DayMoonPicker.showDatePicker(
    context: context,
    initialDate: selectedDate,
    firstDate: DateTime(2000),
    lastDate: DateTime(2100),
  );
  if (picked != null && picked != selectedDate) {
    setState(() {
      selectedDate = picked;
    });
  }
}

时间选择器

TimeOfDay selectedTime = TimeOfDay.now();

void _showTimePicker(BuildContext context) async {
  final TimeOfDay? picked = await DayMoonPicker.showTimePicker(
    context: context,
    initialTime: selectedTime,
  );
  if (picked != null && picked != selectedTime) {
    setState(() {
      selectedTime = picked;
    });
  }
}

日期时间选择器

DateTime selectedDateTime = DateTime.now();

void _showDateTimePicker(BuildContext context) async {
  final DateTime? picked = await DayMoonPicker.showDateTimePicker(
    context: context,
    initialDate: selectedDateTime,
    firstDate: DateTime(2000),
    lastDate: DateTime(2100),
  );
  if (picked != null && picked != selectedDateTime) {
    setState(() {
      selectedDateTime = picked;
    });
  }
}

4. 在 UI 中触发选择器

你可以在按钮的 onPressed 事件中调用上述方法来显示选择器:

ElevatedButton(
  onPressed: () => _showDatePicker(context),
  child: Text('选择日期'),
);

ElevatedButton(
  onPressed: () => _showTimePicker(context),
  child: Text('选择时间'),
);

ElevatedButton(
  onPressed: () => _showDateTimePicker(context),
  child: Text('选择日期和时间'),
);

5. 自定义选择器

DayMoonPicker 还提供了一些自定义选项,例如颜色、主题等。你可以在调用 showDatePickershowTimePickershowDateTimePicker 时传递这些参数来自定义选择器的外观。

final DateTime? picked = await DayMoonPicker.showDatePicker(
  context: context,
  initialDate: selectedDate,
  firstDate: DateTime(2000),
  lastDate: DateTime(2100),
  theme: ThemeData.light().copyWith(
    primaryColor: Colors.blue,
    accentColor: Colors.blueAccent,
    colorScheme: ColorScheme.light(primary: Colors.blue),
    buttonTheme: ButtonThemeData(textTheme: ButtonTextTheme.primary),
  ),
);

6. 处理选择结果

在选择器返回后,你可以根据用户的选择更新 UI 或执行其他操作。

7. 运行项目

确保你的 Flutter 项目已经正确配置,然后运行项目以查看 daymoonpicker 的效果。

flutter run
回到顶部