Flutter代码时间追踪插件wakatime_api的使用

Flutter代码时间追踪插件wakatime_api的使用

概述

这个包只是封装了Wakatime API,并提供了简单的接口来使用它。

开始使用

首先,你需要用你的API密钥实例化WakatimeApi单例:

final wakatime = WakatimeApi('your-api-key');

然后,你可以通过以下方式请求给定日期的心跳数据:

wakatime.getHeartbeats(DateTime.now());
// 或者
wakatime.getHeartBeatsForRange(
    DateTime(1970, 1, 1),
    DateTime.now(),
);

示例代码

以下是一个完整的示例,展示了如何在Flutter应用中使用wakatime_api插件:

import 'package:flutter/material.dart';
import 'package:wakatime_api/apis/wakatime_api.dart';
import 'package:wakatime_api/models/project.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: 'Wakatime api 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> {
  // 使用你的API密钥初始化WakatimeApi
  final _api = WakatimeApi('<YOUR_TOKEN>');

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: FutureBuilder<List<Project>>(
          future: _api.getProjects(), // 获取项目列表
          builder: (context, snap) => Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: snap.data?.map((project) => Text(project.name)).toList() ??
                [
                  const Text('Loading...'), // 如果还在加载中,显示Loading...
                ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter代码时间追踪插件wakatime_api的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter代码时间追踪插件wakatime_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


WakaTime 是一个用于追踪开发者在各种编程活动上花费的时间的工具。它可以集成到多种开发环境和编辑器中,包括 Visual Studio Code、IntelliJ IDEA、Eclipse 等。对于 Flutter 开发者,WakaTime 提供了一个 API 和插件,可以帮助你追踪在 Flutter 项目中的开发时间。

1. 安装 WakaTime 插件

首先,你需要在你的 IDE 或编辑器中安装 WakaTime 插件。以下是在 Visual Studio Code 中安装 WakaTime 插件的步骤:

  1. 打开 Visual Studio Code。
  2. 转到扩展市场 (Ctrl+Shift+X)。
  3. 搜索 WakaTime
  4. 点击 Install 按钮进行安装。

2. 配置 WakaTime API 密钥

安装完成后,你需要配置 WakaTime API 密钥。你可以从 WakaTime 的官网获取你的 API 密钥。

  1. 打开 Visual Studio Code 的命令面板 (Ctrl+Shift+P)。
  2. 输入 WakaTime API Key 并选择 WakaTime: Set API Key
  3. 输入你从 WakaTime 官网获取的 API 密钥。

3. 使用 WakaTime API

WakaTime 提供了一个 RESTful API,允许你获取自己的编程活动数据。以下是如何使用 WakaTime API 的示例:

获取当前用户的统计数据

你可以使用 https://wakatime.com/api/v1/users/current 端点来获取当前用户的统计数据。

import 'dart:convert';
import 'package:http/http.dart' as http;

Future<void> fetchWakaTimeData(String apiKey) async {
  final response = await http.get(
    Uri.parse('https://wakatime.com/api/v1/users/current'),
    headers: {'Authorization': 'Basic ${base64Encode(utf8.encode(apiKey))}'},
  );

  if (response.statusCode == 200) {
    // 解析响应数据
    final data = jsonDecode(response.body);
    print(data);
  } else {
    throw Exception('Failed to load data');
  }
}

void main() {
  final apiKey = 'your_wakatime_api_key';
  fetchWakaTimeData(apiKey);
}

获取用户的每日摘要

你可以使用 https://wakatime.com/api/v1/users/current/summaries 端点来获取用户的每日摘要。

import 'dart:convert';
import 'package:http/http.dart' as http;

Future<void> fetchDailySummary(String apiKey, String date) async {
  final response = await http.get(
    Uri.parse('https://wakatime.com/api/v1/users/current/summaries?date=$date'),
    headers: {'Authorization': 'Basic ${base64Encode(utf8.encode(apiKey))}'},
  );

  if (response.statusCode == 200) {
    // 解析响应数据
    final data = jsonDecode(response.body);
    print(data);
  } else {
    throw Exception('Failed to load data');
  }
}

void main() {
  final apiKey = 'your_wakatime_api_key';
  final date = '2023-10-01'; // 你想要获取摘要的日期
  fetchDailySummary(apiKey, date);
}
回到顶部