Flutter计时步数统计插件step_timer的使用
Flutter计时步数统计插件step_timer的使用
StepTimer Package
一个用于Flutter的可定制计时步数统计小部件包,允许你创建一个具有多种功能的步数计时器,如开始、暂停、恢复、重置和完成等操作。
特性
- 支持基于步骤的计时器功能。
- 允许自定义每步的持续时间。
- 提供计时器开始、暂停、恢复、重置、滴答和完成的回调。
- 通过
widgetBuilder
自定义外观。
安装
在你的pubspec.yaml
文件中添加以下行:
dependencies:
step_timer: <latest-version> # 替换为最新版本
运行flutter pub get
以安装该包。
使用
导入包:
import 'package:step_timer/step_timer.dart';
在你的Flutter应用中使用StepTimerIndicator
小部件,并提供必要的参数:
StepTimerIndicator get _getStepTimer {
return StepTimerIndicator(
key: const Key("timer_page"),
targetDuration: const Duration(seconds: 60),
stepCount: 60,
onInitialization: (controller) {
// 获取并设置计时器控制器
setState(() {
_controller = controller;
});
},
stepChangeDurationInSeconds: 1,
widgetBuilder: (int currentStep, Duration elapsedTime) {
return Center(
child: Text(
elapsedTime.inSeconds.toString(),
key: const ValueKey("timerValue"),
),
);
},
onPause: (Duration timeValue) {
print("Onpause triggered ${timeValue.inSeconds}");
setState(() {
isPause = true;
});
},
onFinish: () {
print("Onfinish triggered");
isRunning = false;
isPause = false;
setState(() {});
},
onTick: (Duration timeValue) {
print("Ontick triggered ${timeValue.inSeconds}");
},
onReset: () {
print("Onreset triggered");
isRunning = false;
isPause = false;
setState(() {});
},
onResume: (Duration timerValue) {
print("Onresume triggered ${timerValue.inSeconds}");
setState(() {
isPause = false;
});
},
onStart: () {
print("Onstart triggered");
setState(() {
isRunning = true;
isPause = false;
});
},
);
}
参数
onInitialization
(必需):初始化时提供计时器控制器的回调函数。targetDuration
(默认60秒):计时器的总持续时间。stepCount
(默认60):计时器中的步骤数量。stepWidth
(可选):每个步骤指示器的宽度。progressColor
(可选):已完成步骤的颜色。space
(可选):中心与步骤线之间的间距。height
(可选):StepTimerIndicator
小部件的高度。width
(可选):StepTimerIndicator
小部件的宽度。initialStep
(可选):从哪个初始步骤开始(0到stepCount-1)。inProgressColor
(可选):未完成步骤的颜色。indicatorColor
(可选):当前步骤三角形指示器的颜色。indicatorGap
(可选):步骤线和三角形指示器之间的间隙。indicatorSize
(必需):三角形指示器的大小。stepChangeDurationInSeconds
(默认1秒):每步的持续时间。widgetBuilder
(可选):构建每个步骤的计时器小部件的函数。onPause
(可选):计时器暂停时触发的回调函数。onFinish
(可选):计时器完成后触发的回调函数。onTick
(可选):每次滴答时触发的回调函数。onReset
(可选):计时器重置时触发的回调函数。onResume
(可选):计时器恢复时触发的回调函数。onStart
(可选):计时器开始时触发的回调函数。
许可证
该项目遵循MIT许可证。详情请参阅MIT许可证。
问题和反馈
请在GitHub仓库提交问题或提供反馈。
示例代码
import 'package:flutter/material.dart';
import 'timer_page.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Step Timer Example',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
darkTheme: ThemeData.dark().copyWith(
primaryColor: Colors.orange,
scaffoldBackgroundColor: Colors.black,
floatingActionButtonTheme: const FloatingActionButtonThemeData(
backgroundColor: Colors.orange,
),
),
themeMode: ThemeMode.dark,
home: const TimerPage(),
);
}
}
更多关于Flutter计时步数统计插件step_timer的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter计时步数统计插件step_timer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用step_timer
插件来进行计时和步数统计的一个简单示例。假设你已经有一个Flutter项目,并且已经添加了step_timer
依赖。
首先,确保在pubspec.yaml
文件中添加step_timer
依赖:
dependencies:
flutter:
sdk: flutter
step_timer: ^最新版本号 # 替换为当前最新版本号
然后运行flutter pub get
来获取依赖。
接下来,我们编写代码来使用这个插件。以下是一个简单的示例,展示如何初始化StepTimer
,开始计时,并在步数变化时更新UI。
主文件 main.dart
import 'package:flutter/material.dart';
import 'package:step_timer/step_timer.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Step Timer Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: StepTimerScreen(),
);
}
}
class StepTimerScreen extends StatefulWidget {
@override
_StepTimerScreenState createState() => _StepTimerScreenState();
}
class _StepTimerScreenState extends State<StepTimerScreen> {
StepTimer? _stepTimer;
int _steps = 0;
Duration _elapsedTime = Duration.zero;
@override
void initState() {
super.initState();
_stepTimer = StepTimer();
// 监听步数变化
_stepTimer!.steps.listen((int steps) {
setState(() {
_steps = steps;
});
});
// 监听时间变化
_stepTimer!.elapsedTime.listen((Duration duration) {
setState(() {
_elapsedTime = duration;
});
});
// 开始计时和步数统计
_stepTimer!.start();
}
@override
void dispose() {
_stepTimer!.stop();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Step Timer Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Steps: $_steps',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
Text(
'Elapsed Time: ${_formatDuration(_elapsedTime)}',
style: TextStyle(fontSize: 24),
),
],
),
),
);
}
String _formatDuration(Duration duration) {
String twoDigits(int n) => n.toString().padLeft(2, '0');
return '${twoDigits(duration.inHours)}:${twoDigits(duration.inMinutes % 60)}:${twoDigits(duration.inSeconds % 60)}';
}
}
解释
- 依赖导入:首先导入
step_timer
包。 - 初始化
StepTimer
:在initState
方法中初始化StepTimer
实例,并监听步数和时间的变化。 - 更新UI:每当步数或时间变化时,使用
setState
方法更新UI。 - 停止计时:在
dispose
方法中停止StepTimer
,以防止内存泄漏。 - 格式化时间:
_formatDuration
方法用于将Duration
对象格式化为HH:MM:SS
格式的字符串。
这个示例展示了如何使用step_timer
插件来实时统计步数和计时,并将结果显示在Flutter应用的UI上。你可以根据实际需求进一步扩展和优化这个示例。