fit_converter 0.5.0 copy "fit_converter: ^0.5.0" to clipboard
fit_converter: ^0.5.0 copied to clipboard

A Dart package for converting between FIT, GPX, and TCX formats

fit_converter #

A powerful Dart library for processing and converting sports activity data. Seamlessly convert between FIT, GPX, and TCX formats, and perform advanced operations like merging and cutting FIT files.

Pub Version License: MIT

Features #

  • 🔄 Multi-format Conversion:
    • FIT ➡️ GPX, TCX, TXT (Brief Summary)
    • GPX ➡️ FIT, TCX
    • TCX ➡️ FIT, GPX
  • 🛠️ FIT File Manipulation:
    • Merge: Combine multiple FIT files into a single activity.
    • Cut: Precisely trim FIT files using time offsets.
  • 📊 Quick Summary: Extract brief activity information (Sport, Distance, Laps, etc.) without full decoding.
  • Low-Level Inspection: Examine FIT file structure with detailed message and field information.
  • 💻 Unified CLI Tool: Comprehensive command-line interface with 5 powerful commands.

Installation #

Add this to your pubspec.yaml:

dependencies:
  fit_converter: ^0.5.0

Then run dart pub get.

Usage #

Library Usage #

import 'dart:io';
import 'package:fit_converter/fit_converter.dart' hide File;

void main() async {
  final converter = FitConverter();
  final fitBytes = await File('activity.fit').readAsBytes();

  // Convert FIT to GPX
  final gpxString = await converter.fitToGpx(fitBytes);
  print(gpxString);

  // Convert FIT to TCX
  final tcxString = await converter.fitToTcx(fitBytes);
  print(tcxString);

  // Get Brief Info
  final briefInfo = await converter.fitToBrief(fitBytes);
  print(briefInfo);

  // Merge multiple FIT files
  final fitBytes2 = await File('activity2.fit').readAsBytes();
  final merged = await converter.mergeFit([fitBytes, fitBytes2]);
  await File('merged.fit').writeAsBytes(merged);

  // Cut FIT file (first 10 minutes)
  final cut = await converter.cutFit(fitBytes, 0, 600);
  await File('cut.fit').writeAsBytes(cut);
}

Command-Line Tool #

The package includes a unified CLI tool tool/fit.dart with 5 commands. For detailed documentation, see tool/README.md.

Quick Start

# Show help
dart tool/fit.dart --help

# Get activity summary
dart tool/fit.dart brief activity.fit

# Convert FIT to GPX
dart tool/fit.dart convert activity.fit -o activity.gpx

# Cut first 10 minutes
dart tool/fit.dart cut activity.fit -o warmup.fit -e 600

# Inspect FIT file structure
dart tool/fit.dart detail activity.fit --filter 20

# Merge multiple files
dart tool/fit.dart merge part1.fit part2.fit -o complete.fit

Available Commands

Command Description
brief Show a summary of a FIT, GPX, or TCX file
convert Convert between FIT, GPX, and TCX formats
cut Cut a portion of a FIT file by time offset
detail Show low-level FIT message details
merge Merge multiple FIT files into one

For complete documentation with examples and troubleshooting, see tool/README.md.

Auto-Lap & Distance Logic (GPX to FIT) #

When converting from GPX to FIT, fit_converter automatically handles:

  • Distance Calculation: Uses the Haversine formula to compute distance between track points.
  • Auto-Lapping:
    • Cycling: Automatically creates a new lap every 5km.
    • Running: Automatically creates a new lap every 1km.
    • Other: Default laps for other sports.

Platform Support #

Works on any platform supported by Dart (Windows, macOS, Linux, Web, Android, iOS).

License #

This project is licensed under the MIT License - see the LICENSE file for details.

1
likes
130
points
28
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Dart package for converting between FIT, GPX, and TCX formats

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

args, fit_sdk, path, xml

More

Packages that depend on fit_converter