Flutter时长选择插件duration_picker_dialog_box的使用

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

Flutter时长选择插件 duration_picker_dialog_box 的使用

duration_picker_dialog_box 是一个用于在Flutter应用中选择时长的插件。它允许用户通过UI界面选择不同的时间单位,如天、小时、分钟、秒、毫秒和微秒。

支持的时间单位

  • 天 (Days)
  • 小时 (Hours)
  • 分钟 (Minutes)
  • 秒 (Seconds)
  • 毫秒 (Milliseconds)
  • 微秒 (Microseconds)

示例用法

以下是一个完整的示例代码,展示了如何使用 duration_picker_dialog_box 插件来显示一个时长选择对话框,并初始化时间为7天32分钟23小时54秒23毫秒434微秒。用户可以根据需要更改这些值。

完整示例代码

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

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(title: 'Flutter Demo Home Page'),
    );
  }
}

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

  final String? title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  Duration _duration = Duration();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title!),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextButton(
              onPressed: () async {
                Duration? selectedDuration = await showDurationPicker(
                  context: context,
                  initialDuration: Duration(
                    days: 7,
                    minutes: 32,
                    hours: 23,
                    seconds: 54,
                    milliseconds: 23,
                    microseconds: 434,
                  ),
                  durationPickerMode: DurationPickerMode.Hour,
                );
                if (selectedDuration != null) {
                  setState(() {
                    _duration = selectedDuration;
                  });
                }
              },
              child: Text("Show Duration Picker"),
            ),
            SizedBox(height: 20),
            Text(
              "Selected Duration: $_duration",
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 20),
            DurationPicker(
              duration: _duration,
              onChange: (value) {
                setState(() {
                  _duration = value;
                });
              },
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        tooltip: 'Increment',
        onPressed: () {},
        child: Icon(Icons.add),
      ),
    );
  }
}

使用说明

  1. 导入插件:首先确保你已经在 pubspec.yaml 文件中添加了依赖项:

    dependencies:
      duration_picker_dialog_box: ^latest_version
    

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

  2. 显示时长选择对话框:你可以通过调用 showDurationPicker 函数来显示一个时长选择对话框。例如:

    Duration? selectedDuration = await showDurationPicker(
      context: context,
      initialDuration: Duration(days: 7, minutes: 32, hours: 23, seconds: 54, milliseconds: 23, microseconds: 434),
      durationPickerMode: DurationPickerMode.Hour,
    );
    
  3. 作为小部件使用:你也可以将 DurationPicker 作为一个小部件直接嵌入到你的布局中:

    DurationPicker(
      duration: _duration,
      onChange: (value) {
        setState(() {
          _duration = value;
        });
      },
    )
    

时间单位模式

你可以指定不同的时间单位模式来限制用户选择的时间范围。例如:

showDurationPicker(
  context: context,
  initialDuration: Duration(),
  durationPickerMode: DurationPickerMode.Hour,
);

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

1 回复

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


当然,以下是如何在Flutter项目中使用duration_picker_dialog_box插件的一个详细代码示例。这个插件允许你在应用中实现一个时长选择器对话框。

首先,你需要在你的pubspec.yaml文件中添加该插件的依赖项:

dependencies:
  flutter:
    sdk: flutter
  duration_picker_dialog_box: ^latest_version  # 请替换为最新版本号

然后,运行flutter pub get来获取依赖项。

接下来,你可以在你的Flutter项目中实现时长选择对话框。以下是一个完整的示例,展示了如何使用DurationPickerDialogBox

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

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

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

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

class _MyHomePageState extends State<MyHomePage> {
  Duration? selectedDuration;

  void _pickDuration() async {
    final result = await DurationPickerDialogBox.build(
      context: context,
      initialDuration: Duration(hours: 1, minutes: 30),  // 初始时长
      minuteInterval: 15,  // 每15分钟一个间隔
      allowZeroDuration: false,  // 是否允许选择0时长
      locale: Locale('en', 'US'),  // 语言环境,可以根据需要更改
    );

    if (!result!.cancelled) {
      setState(() {
        selectedDuration = result.duration;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Duration Picker Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Selected Duration:',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 10),
            Text(
              selectedDuration == null
                  ? 'No duration selected'
                  : '${selectedDuration!.inHours}h ${selectedDuration!.inMinutes % 60}m',
              style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _pickDuration,
              child: Text('Pick Duration'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮用于打开时长选择器对话框。当用户选择时长并点击确认后,所选时长会显示在屏幕上。

  • DurationPickerDialogBox.build方法用于构建时长选择器对话框。
  • initialDuration参数设置了初始时长。
  • minuteInterval参数设置了分钟选择的间隔(这里是15分钟)。
  • allowZeroDuration参数用于设置是否允许选择0时长。
  • locale参数用于设置语言环境。

你可以根据实际需求调整这些参数。希望这个示例对你有所帮助!

回到顶部