Flutter时间选择插件duration_picker2的使用
Flutter时间选择插件duration_picker2的使用
duration_picker2
是一个用于在 Flutter 应用程序中选择持续时间的小部件。该插件受到 Material Design 时间选择器的启发,提供了直观的时间选择界面。
示例展示
以下是 duration_picker2
的功能演示:
使用步骤
1. 添加依赖
在项目的 pubspec.yaml
文件中添加以下依赖项:
dependencies:
duration_picker2: "^1.0.0"
然后运行 flutter pub get
来安装依赖。
2. 导入必要的包
在需要使用 duration_picker2
的文件中导入以下包:
import 'package:duration_picker2/duration_picker.dart';
import 'package:flutter/material.dart';
3. 创建基本示例
以下是一个完整的示例代码,展示了如何使用 duration_picker2
插件:
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: 'Duration Picker Demo',
theme: ThemeData(
useMaterial3: true,
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Duration Picker Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
// 初始化持续时间为 21 秒
Duration _initTime = const Duration(seconds: 21);
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 使用 DurationPicker 小部件
Expanded(
child: DurationPicker(
initialTime: _initTime,
minTime: const Duration(seconds: 15), // 最小时间为 15 秒
maxTime: const Duration(seconds: 30), // 最大时间为 30 秒
enableHapticFeedback: false, // 禁用触觉反馈
baseUnit: BaseUnit.second, // 基础单位为秒
onChange: (val) {
setState(() {
_initTime = val; // 更新选择的时间
});
},
snapToMins: 5.0, // 每次调整步长为 5 秒
),
)
],
),
),
floatingActionButton: Builder(
builder: (BuildContext context) => FloatingActionButton(
onPressed: () async {
// 显示弹出式持续时间选择器
var resultingDuration = await showDurationPicker(
context: context,
initialTime: const Duration(seconds: 21),
minTime: const Duration(seconds: 15),
maxTime: const Duration(seconds: 30),
baseUnit: BaseUnit.second,
);
// 显示选择结果
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Chose duration: $resultingDuration')),
);
},
tooltip: 'Popup Duration Picker',
child: const Icon(Icons.add),
),
),
);
}
}
1 回复
更多关于Flutter时间选择插件duration_picker2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
duration_picker2
是一个用于 Flutter 的时间选择插件,允许用户选择持续时间(例如小时、分钟和秒)。它提供了一个直观的界面,用户可以通过滑动选择器来选择时间。
安装
首先,你需要在 pubspec.yaml
文件中添加 duration_picker2
依赖:
dependencies:
flutter:
sdk: flutter
duration_picker2: ^1.0.0
然后运行 flutter pub get
来安装依赖。
基本用法
以下是一个简单的示例,展示如何使用 duration_picker2
插件:
import 'package:flutter/material.dart';
import 'package:duration_picker2/duration_picker2.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DurationPickerExample(),
);
}
}
class DurationPickerExample extends StatefulWidget {
@override
_DurationPickerExampleState createState() => _DurationPickerExampleState();
}
class _DurationPickerExampleState extends State<DurationPickerExample> {
Duration _duration = Duration(hours: 0, minutes: 0, seconds: 0);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Duration Picker Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Selected Duration: ${_duration.inHours}h ${_duration.inMinutes.remainder(60)}m ${_duration.inSeconds.remainder(60)}s',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
final Duration? pickedDuration = await showDurationPicker(
context: context,
initialDuration: _duration,
);
if (pickedDuration != null) {
setState(() {
_duration = pickedDuration;
});
}
},
child: Text('Pick Duration'),
),
],
),
),
);
}
}
解释
- 导入依赖:首先导入
duration_picker2
插件。 - 创建状态:在
_DurationPickerExampleState
中,我们定义了一个_duration
变量来存储用户选择的持续时间。 - 显示选择器:当用户点击按钮时,调用
showDurationPicker
方法来显示持续时间选择器。initialDuration
参数用于设置选择器的初始值。 - 更新状态:如果用户选择了新的持续时间,我们使用
setState
来更新_duration
并刷新 UI。
自定义选项
showDurationPicker
方法还支持一些自定义选项,例如:
snapToMins
:是否将选择器对齐到分钟。baseUnit
:设置选择器的基本单位(例如DurationPickerBaseUnit.minute
或DurationPickerBaseUnit.second
)。
final Duration? pickedDuration = await showDurationPicker(
context: context,
initialDuration: _duration,
snapToMins: true,
baseUnit: DurationPickerBaseUnit.minute,
);