Flutter时间选择器插件time_picker_sheet的使用

Flutter时间选择器插件time_picker_sheet的使用

简介

time_picker_sheet 是一个用于 Flutter 的时间选择器库。通过这个库,你可以轻松地创建一个时间选择器,并且可以根据需求自定义弹出窗口中的小部件。

time_picker_sheet截图


如何使用

使用 time_picker_sheet 非常简单,只需几行代码即可实现时间选择器弹出。以下是基本用法:

TimePicker.show(
    context: context,
    sheet: TimePickerSheet(
        sheetTitle: '设置会议时间',
        hourTitle: '小时',
        minuteTitle: '分钟',
        saveButtonText: '保存',
    ),
);

如果你希望获取用户选择的时间结果,可以使用 await 来等待结果返回。以下是一个完整的示例代码:

final result = await TimePicker.show<DateTime?>(
    context: context,
    sheet: TimePickerSheet(
        sheetTitle: '设置会议时间',
        hourTitle: '小时',
        minuteTitle: '分钟',
        saveButtonText: '保存',
    ),
);

// 如果用户点击了保存按钮,则 result 不为 null
if (result != null) {
    print('选择的时间是: ${result.hour}:${result.minute}');
}

注意:如果用户关闭时间选择器而未点击保存按钮,结果将会是 null


自定义选项

time_picker_sheet 提供了许多可自定义的选项,以满足不同的设计需求。以下是所有可配置的选项及其默认值:

可定制的选项

  • Sheet 标题及样式
  • 关闭图标及其颜色
  • 小时标题及样式
  • 分钟标题及样式
  • 选中小时和分钟的样式
  • 保存按钮的颜色与文字
  • 时间格式(1位或2位数字)
    • 默认为两位数字格式。
  • 小时间隔(最小值和最大值)
    • 默认间隔为 1,范围为 0 到 23。
  • 分钟间隔(最小值和最大值)
    • 默认间隔为 15,选项为 0, 15, 30, 45。
  • 初始时间
    • 默认为 00:00

所有这些选项都有默认值,如果你想要更改它们,请通过构造函数进行设置。


完整示例代码

以下是一个完整的示例代码,展示如何使用 time_picker_sheet 插件并实现时间选择器功能:

import 'package:flutter/material.dart';
import 'package:time_picker_sheet/widget/sheet.dart';
import 'package:time_picker_sheet/widget/time_picker.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(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: '时间选择器示例'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  // 存储用户选择的时间
  DateTime dateTimeSelected = DateTime.now();

  // 打开时间选择器
  void _openTimePickerSheet(BuildContext context) async {
    final result = await TimePicker.show&lt;DateTime?&gt;(
      context: context,
      sheet: TimePickerSheet(
        sheetTitle: '设置会议时间', // 弹窗标题
        minuteTitle: '分钟',         // 分钟标题
        hourTitle: '小时',           // 小时标题
        saveButtonText: '保存',       // 保存按钮文字
      ),
    );

    // 如果用户选择了时间
    if (result != null) {
      setState(() {
        dateTimeSelected = result;
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: &lt;Widget&gt;[
            ElevatedButton(
              onPressed: () =&gt; _openTimePickerSheet(context), // 点击按钮打开时间选择器
              child: Text('打开时间选择器'),
            ),
            Text('选择的时间是: ${dateTimeSelected.hour}:${dateTimeSelected.minute}'), // 显示选择的时间
          ],
        ),
      ),
    );
  }
}
1 回复

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


time_picker_sheet 是一个用于 Flutter 的时间选择器插件,它提供了一个简单且美观的界面,允许用户选择时间。以下是如何在 Flutter 项目中使用 time_picker_sheet 插件的步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 time_picker_sheet 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  time_picker_sheet: ^1.0.0  # 请检查最新版本

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

2. 导入包

在你的 Dart 文件中导入 time_picker_sheet 包。

import 'package:time_picker_sheet/time_picker_sheet.dart';

3. 使用时间选择器

你可以通过调用 showTimePickerSheet 方法来显示时间选择器。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Time Picker Sheet Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            final selectedTime = await showTimePickerSheet(
              context: context,
              sheet: TimePickerSheet(
                initialTime: TimeOfDay.now(),
                minuteInterval: 1,
                is24hFormat: true,
                onSelectTime: (time) {
                  print('Selected time: $time');
                },
              ),
            );

            if (selectedTime != null) {
              print('Selected time: $selectedTime');
            }
          },
          child: Text('Show Time Picker'),
        ),
      ),
    );
  }
}

4. 参数说明

  • context: 当前的 BuildContext。
  • sheet: TimePickerSheet 实例,用于配置时间选择器。
    • initialTime: 初始时间,默认为当前时间。
    • minuteInterval: 分钟间隔,默认为 1。
    • is24hFormat: 是否使用 24 小时制,默认为 false。
    • onSelectTime: 当用户选择时间时触发的回调函数。

5. 处理选择的时间

showTimePickerSheet 方法返回一个 TimeOfDay 对象,表示用户选择的时间。你可以根据需要进行处理。

6. 自定义样式

你可以通过 TimePickerSheetstyle 参数来自定义时间选择器的样式。例如:

sheet: TimePickerSheet(
  initialTime: TimeOfDay.now(),
  minuteInterval: 1,
  is24hFormat: true,
  style: TimePickerStyle(
    backgroundColor: Colors.white,
    selectedColor: Colors.blue,
    unselectedColor: Colors.grey,
    textStyle: TextStyle(fontSize: 18),
  ),
  onSelectTime: (time) {
    print('Selected time: $time');
  },
),
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!