Flutter步数统计与展示插件steps_widget的使用

Flutter步数统计与展示插件steps_widget的使用

特性

简单跟踪小部件用于显示已完成和剩余的旅程步骤。

开始使用

通过自定义颜色和文本样式来跟踪订单或旅程。

使用方法

example文件夹中可以找到完整的示例代码。

TrackingWidget(
  direction: Axis.horizontal, // 指定方向为水平
  itemGap: 35, // 设置每个项目之间的间距
  color: Colors.grey, // 设置背景颜色
  trackList: [  
    Track(isActive: true, labelText: "Created"), // 第一个步骤已激活
    Track(isActive: true, labelText: "Out of Delivery"), // 第二个步骤已激活
    Track(isActive: false, labelText: "Fulfilled"), // 第三个步骤未激活
  ],
)

其他信息

TrackingWidget是主类,支持两种类型:水平或垂直。使用非常简单,只需提供列表和轨迹即可渲染。

示例代码

以下是完整的示例代码,可以在GitHub上查看完整的代码

import 'package:flutter/material.dart';
import 'package:steps_widget/models/track.dart'; // 导入步骤模型
import 'package:steps_widget/tracking_widget.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: 'Flutter Demo Home Page'), // 主页
    );
  }
}

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> {
  [@override](/user/override)
  Widget build(BuildContext context) { // 构建方法
    return Scaffold( // 创建Scaffold
        appBar: AppBar( // 创建AppBar
          title: Text(widget.title), // 设置标题
        ),
        body: Center( // 设置中心对齐
          child: Column(children: [ // 创建列布局
            TrackingWidget( // 水平方向的跟踪小部件
              direction: Axis.horizontal, // 水平方向
              itemGap: 35, // 设置间距
              color: Colors.grey, // 设置背景颜色
              trackList: [  
                Track(isActive: true, labelText: "Created"), // 第一个步骤已激活
                Track(isActive: true, labelText: "Out of Delivery"), // 第二个步骤已激活
                Track(isActive: false, labelText: "Fulfilled"), // 第三个步骤未激活
              ],
            ),
            const SizedBox(height: 60,), // 添加间距
            TrackingWidget( // 垂直方向的跟踪小部件
              direction: Axis.vertical, // 垂直方向
              itemGap: 35, // 设置间距
              color: Colors.grey, // 设置背景颜色
              trackList: [  
                Track(isActive: true, labelText: "Created", date: '9 Aug 2022'), // 第一个步骤已激活并带有日期
                Track(isActive: true, labelText: "Out of Delivery", date: '10 Aug 2022'), // 第二个步骤已激活并带有日期
                Track(isActive: false, labelText: "Fulfilled"), // 第三个步骤未激活
              ],
            )
          ],),
        ));
  }
}

更多关于Flutter步数统计与展示插件steps_widget的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter步数统计与展示插件steps_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


steps_widget 是一个用于在 Flutter 应用中统计和展示步数的插件。它可以帮助你轻松地集成步数统计功能,并在应用中展示用户的步数数据。以下是如何使用 steps_widget 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  steps_widget: ^latest_version

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

2. 导入包

在你的 Dart 文件中导入 steps_widget 包:

import 'package:steps_widget/steps_widget.dart';

3. 使用 StepsWidget

StepsWidget 是一个用于展示步数的 Widget。你可以通过设置步数、目标步数等参数来自定义它的外观。

基本用法

StepsWidget(
  currentSteps: 5000,
  goalSteps: 10000,
  stepsText: '步',
  progressColor: Colors.blue,
  backgroundColor: Colors.grey[300],
  width: 200,
  height: 200,
)

参数说明

  • currentSteps: 当前步数。
  • goalSteps: 目标步数。
  • stepsText: 步数单位文本,默认为 '步'
  • progressColor: 进度条的颜色。
  • backgroundColor: 背景颜色。
  • width: Widget 的宽度。
  • height: Widget 的高度。

4. 获取步数数据

在实际应用中,你可能需要从设备传感器或健康数据 API 中获取步数数据。通常,你可以使用 pedometerhealth 等插件来获取步数数据。

例如,使用 pedometer 插件获取步数:

import 'package:pedometer/pedometer.dart';

class StepCounter extends StatefulWidget {
  [@override](/user/override)
  _StepCounterState createState() => _StepCounterState();
}

class _StepCounterState extends State<StepCounter> {
  int _steps = 0;

  [@override](/user/override)
  void initState() {
    super.initState();
    _initPedometer();
  }

  void _initPedometer() {
    Pedometer.stepCountStream.listen((StepCount event) {
      setState(() {
        _steps = event.steps;
      });
    }).onError((error) {
      print("Error: $error");
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return StepsWidget(
      currentSteps: _steps,
      goalSteps: 10000,
      stepsText: '步',
      progressColor: Colors.blue,
      backgroundColor: Colors.grey[300],
      width: 200,
      height: 200,
    );
  }
}

5. 完整示例

以下是一个完整的示例,展示了如何使用 StepsWidgetpedometer 插件来统计和展示步数:

import 'package:flutter/material.dart';
import 'package:steps_widget/steps_widget.dart';
import 'package:pedometer/pedometer.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: StepCounter(),
    );
  }
}

class StepCounter extends StatefulWidget {
  [@override](/user/override)
  _StepCounterState createState() => _StepCounterState();
}

class _StepCounterState extends State<StepCounter> {
  int _steps = 0;

  [@override](/user/override)
  void initState() {
    super.initState();
    _initPedometer();
  }

  void _initPedometer() {
    Pedometer.stepCountStream.listen((StepCount event) {
      setState(() {
        _steps = event.steps;
      });
    }).onError((error) {
      print("Error: $error");
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('步数统计'),
      ),
      body: Center(
        child: StepsWidget(
          currentSteps: _steps,
          goalSteps: 10000,
          stepsText: '步',
          progressColor: Colors.blue,
          backgroundColor: Colors.grey[300],
          width: 200,
          height: 200,
        ),
      ),
    );
  }
}
回到顶部