{"id":16075256,"url":"https://github.com/ricardoboss/dart_nmea","last_synced_at":"2026-01-11T04:06:37.192Z","repository":{"id":47194182,"uuid":"500615144","full_name":"ricardoboss/dart_nmea","owner":"ricardoboss","description":"An extensible NMEA0183 parser written 100% in dart.","archived":false,"fork":false,"pushed_at":"2025-03-01T11:25:26.000Z","size":143,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-09T05:39:08.543Z","etag":null,"topics":["cross-platform","dart","flutter","library","nmea","nmea-parser","nmea0183"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/nmea","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ricardoboss.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-06T22:44:38.000Z","updated_at":"2025-03-01T11:25:24.000Z","dependencies_parsed_at":"2025-01-28T20:31:06.661Z","dependency_job_id":null,"html_url":"https://github.com/ricardoboss/dart_nmea","commit_stats":{"total_commits":96,"total_committers":4,"mean_commits":24.0,"dds":0.375,"last_synced_commit":"37abc3505dd1afb8da2aa33750c863b70fcdc39b"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoboss%2Fdart_nmea","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoboss%2Fdart_nmea/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoboss%2Fdart_nmea/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoboss%2Fdart_nmea/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ricardoboss","download_url":"https://codeload.github.com/ricardoboss/dart_nmea/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243886001,"owners_count":20363649,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","dart","flutter","library","nmea","nmea-parser","nmea0183"],"created_at":"2024-10-09T09:03:33.433Z","updated_at":"2026-01-11T04:06:37.179Z","avatar_url":"https://github.com/ricardoboss.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"![GitHub License](https://img.shields.io/github/license/ricardoboss/dart_nmea)\n![Pub Version](https://img.shields.io/pub/v/nmea)\n![Pub Points](https://img.shields.io/pub/points/nmea)\n![Pub Likes](https://img.shields.io/pub/likes/nmea)\n![Pub Popularity](https://img.shields.io/pub/popularity/nmea)\n[![Pipeline](https://github.com/ricardoboss/dart_nmea/actions/workflows/dart.yml/badge.svg)](https://github.com/ricardoboss/dart_nmea/actions/workflows/dart.yml)\n\n# ![dart_nmea Logo](https://raw.githubusercontent.com/ricardoboss/dart_nmea/main/images/logo_32.png) nmea\n\nAn extensible NMEA0183 parser.\n\nTake a look at the [example](example/example.dart) to see how to use it.\n\n## Usage\n\n```dart\n// 1. declare your sentences (use TalkerSentence and ProprietarySentence)\nclass AbcSentence extends TalkerSentence {\n  AbcSentence({required super.raw});\n  \n  String get data =\u003e fields[1];\n  \n  @override\n  bool get valid =\u003e super.valid \u0026\u0026 fields.length == 2;\n}\n\n// 2. register your sentences\nfinal decoder = NmeaDecoder()\n  ..registerTalkerSentence('ABC', (line) =\u003e AbcSentence(raw: line));\n\n// 3. decode a line\nfinal sentence = decoder.decode(r'$--ABC,123456789*5D');\n\n// 4. consume your sentences\nprint(sentence.valid); // true\nprint(sentence.checksum); // 5D\nprint(sentence.source); // --\nif (sentence is AbcSentence) {\n  print(sentence.data); // 123456789\n}\n```\n\nYou can also use it as a StreamTransformer for a stream of Strings:\n\n```dart\nfinal stream = Stream.fromIterable([r'$--ABC,123456789*5D', r'$--DEF,987654321*5D']);\nfinal transformed = stream.transform(decoder);\ntransformed.listen((sentence) {\n  print(sentence.valid); // true\n  print(sentence.checksum); // 5D\n  print(sentence.source); // --\n  if (sentence is AbcSentence) {\n    print(sentence.data); // 123456789\n  }\n});\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricardoboss%2Fdart_nmea","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fricardoboss%2Fdart_nmea","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricardoboss%2Fdart_nmea/lists"}