Flutter时间选择器插件time_picker_wheel的使用
Flutter时间选择器插件time_picker_wheel的使用
特性
- 易于使用
- 完全可定制
开始使用
在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
...
time_picker_wheel: <version>
然后运行flutter pub get
来安装插件。
使用方法
首先,在你的 Dart 文件中导入 time_picker_wheel
包:
import 'package:time_picker_wheel/time_picker_wheel.dart';
默认样式
你可以直接使用默认样式的 TimePicker
:
TimePicker(
onChange: (timeOfDay) {
// 当时间改变时调用的回调函数
},
),
自定义样式
你也可以自定义 TimePicker
的样式:
TimePicker(
onChange: (timeOfDay) {
// 当时间改变时调用的回调函数
},
options: TimePickerOptions.byDefault(
height: 200, // 滚轮的高度
itemExtent: 30, // 每一项的高度
diameterRatio: 1, // 滚轮的直径比例
selectedRowHeight: 70, // 选中行的高度
fontOpacity: 1, // 字体透明度
fontColor: Colors.purple, // 字体颜色
labelSize: 25, // 标签字体大小
numberSize: 25, // 数字字体大小
amPmSize: 15, // AM/PM字体大小
amPmWidth: 25, // AM/PM宽度
wheelWidth: 50, // 滚轮宽度
selectedRowHorizontalPadding: double.maxFinite, // 选中行的水平填充
selectedRowHorizontalBorderRadius: 0, // 选中行的水平圆角半径
selectedRowForegroundColor: Colors.black, // 选中行的前景色
selectedRowBackgroundColor: Colors.amber, // 选中行的背景色
),
),
示例代码
下面是一个完整的示例代码,展示了如何在 Flutter 应用中使用 time_picker_wheel
插件:
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:spaces2/spaces2.dart';
import 'package:time_picker_wheel/time_picker_wheel.dart';
void main() {
runApp(
Spacing.fixed(
data: SpacingData.generate(16),
child: const App(),
),
);
}
class App extends StatefulWidget {
const App({super.key});
[@override](/user/override)
State<App> createState() => _AppState();
}
class _AppState extends State<App> {
String defaultPickerTime = '';
String customizePickerTime = '';
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
centerTitle: true,
title: const Text('时间选择器'),
),
body: SpacedColumn(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
defaultStyle(),
customizeStyle(),
],
),
),
);
}
Widget defaultStyle() {
return SpacedColumn(
children: [
Text(
'默认样式',
style: Theme.of(context).textTheme.headlineSmall,
),
TimePicker(
onChange: (timeOfDay) {
setState(() {
defaultPickerTime = getFormatedTimeFromTimeOfDay(timeOfDay);
});
},
),
Text(
defaultPickerTime,
style: Theme.of(context).textTheme.headlineSmall,
),
],
);
}
Widget customizeStyle() {
return SpacedColumn(
children: [
Text(
'自定义样式',
style: Theme.of(context).textTheme.headlineSmall,
),
TimePicker(
onChange: (timeOfDay) {
setState(() {
customizePickerTime = getFormatedTimeFromTimeOfDay(timeOfDay);
});
},
options: TimePickerOptions.byDefault(
height: 200,
itemExtent: 30,
diameterRatio: 1,
selectedRowHeight: 70,
fontOpacity: 1,
fontColor: Colors.purple,
labelSize: 25,
numberSize: 25,
amPmSize: 15,
amPmWidth: 25,
wheelWidth: 50,
selectedRowHorizontalPadding: double.maxFinite,
selectedRowHorizontalBorderRadius: 0,
selectedRowForegroundColor: Colors.black,
selectedRowBackgroundColor: Colors.amber,
),
),
Text(
customizePickerTime,
style: Theme.of(context).textTheme.headlineSmall,
),
],
);
}
String getFormatedTimeFromTimeOfDay(TimeOfDay timeOfDay) {
final hour = timeOfDay.hourOfPeriod.toString().padLeft(2, '0');
final minute = timeOfDay.minute.toString().padLeft(2, '0');
final period = timeOfDay.period.name.toUpperCase();
String time = '$hour:$minute $period';
log(time);
return time;
}
}
更多关于Flutter时间选择器插件time_picker_wheel的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter时间选择器插件time_picker_wheel的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter应用中使用time_picker_wheel
插件的一个代码示例。time_picker_wheel
是一个流行的Flutter插件,用于实现时间选择器。
首先,确保你已经在pubspec.yaml
文件中添加了time_picker_wheel
依赖:
dependencies:
flutter:
sdk: flutter
time_picker_wheel: ^latest_version # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter应用中实现时间选择器。以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:time_picker_wheel/time_picker_wheel.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Time Picker Wheel Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
TimeOfDay _selectedTime = TimeOfDay.now();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Time Picker Wheel Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Selected Time: ${_selectedTime.format(context)}',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
final TimeOfDay? picked = await showTimePicker(
context: context,
initialTime: _selectedTime,
builder: (BuildContext context, Widget? child) {
return Theme(
data: ThemeData.light().copyWith(
colorScheme: ColorScheme.fromSwatch(
primarySwatch: Colors.blue,
),
),
child: child!,
);
},
);
if (picked != null && picked != _selectedTime) {
setState(() {
_selectedTime = picked;
});
}
},
child: Text('Pick Time'),
),
],
),
),
);
}
}
在这个示例中,我们做了以下几件事:
-
引入必要的包:我们导入了
flutter/material.dart
和time_picker_wheel/time_picker_wheel.dart
。 -
定义主应用:
MyApp
是一个StatelessWidget
,它设置了应用的主题和主页。 -
创建主页:
MyHomePage
是一个StatefulWidget
,它包含了一个状态变量_selectedTime
,用于存储用户选择的时间。 -
显示当前时间和按钮:在
MyHomePage
的build
方法中,我们使用Text
组件显示当前选择的时间,并使用ElevatedButton
组件创建一个按钮来打开时间选择器。 -
打开时间选择器:当用户点击按钮时,会调用
showTimePicker
函数。这个函数返回一个Future<TimeOfDay?>
,当用户选择时间后,结果会被赋值给_selectedTime
,并通过setState
方法更新UI。
注意:在上面的代码中,showTimePicker
函数是Flutter SDK自带的,而不是time_picker_wheel
插件提供的。time_picker_wheel
插件通常用于自定义时间选择器的样式和行为,但在这个例子中,为了简洁起见,我们使用了Flutter自带的时间选择器。如果你需要自定义时间选择器的外观或行为,你可以深入研究time_picker_wheel
插件的文档和示例代码来实现。
希望这个示例对你有所帮助!如果你有更具体的需求或问题,请随时告诉我。