dart_keywords 0.1.0 copy "dart_keywords: ^0.1.0" to clipboard
dart_keywords: ^0.1.0 copied to clipboard

Information about Dart keywords by language version.

A package for determining information about the keywords supported by Dart at a specific language versions.

Installation #

To use package:dart_keywords and access its keyword information, first add it as a dependency in your pubspec.yaml file:

dart pub add dart_keywords

If you need information about a specific language version, you'll also need to add package:language_version as a dependency:

dart pub add language_version

Usage #

The package contains a singular built-in library:

  • package:dart_keywords/dart_keywords.dart

    Provides the DartKeywords type for determining the keywords supported by Dart code at a specific language version. Keywords are represented as a DartKeyword which provides information about the keyword's name, ability to be used as an identifier, and when support for it was introduced.

Determine the keywords supported by a language version #

To access the keywords supported by a specific Dart language version, use the DartKeywords.forVersion factory constructor.

import 'package:dart_keywords/dart_keywords.dart';
import 'package:language_version/language_version.dart';

void main() {
  // Get the keywords for a language version of 3.0.
  final dart3Keywords = DartKeywords.forVersion(LanguageVersion(3, 0));

  // List all keywords supported by language version 3.0.
  for (final keyword in dart3Keywords.allKeywords) {
    print(keyword.name);
  }
}

If you don't care about the language version, you can use the DartKeywords.forLatest factory constructor instead. It determines and returns the keywords supported by the latest language version that is supported by the package.

import 'package:dart_keywords/dart_keywords.dart';

void main() {
  // Get the keywords for the latest language version supported by the package.
  final dart3Keywords = DartKeywords.forLatest();

  // List all keywords supported by the latest supported language version.
  for (final keyword in dart3Keywords.allKeywords) {
    print('${keyword.name} (${keyword.reserveType.name})');
  }
}

Check if a keyword exists or is supported by a language version #

If you just want to check if the specified language version supports a keyword, use the supportsKeyword() instance method.

import 'package:dart_keywords/dart_keywords.dart';
import 'package:language_version/language_version.dart';

void main() {
  final keywords = DartKeywords.forVersion(LanguageVersion(3, 0));

  if (keywords.supportsKeyword('sealed')) {
    print('`sealed` is a keyword in Dart code with language version 3.0.');
  }
}

Find out if a keyword can be used as an identifier #

Each keyword has a reserveType that indicates whether it can be used as an identifier and what restrictions apply. You can use the byName() instance method to get details about a specific keyword, then check its reservation type.

import 'package:dart_keywords/dart_keywords.dart';

void main() {
  final keywords = DartKeywords.forLatest();

  // Check if the 'async' keyword can be used as an identifier.
  final asyncKeyword = keywords.byName('async');
  if (asyncKeyword != null) {
    switch (asyncKeyword.reserveType) {
      case DartKeywordReserveType.never:
        print(
          '`${asyncKeyword.name}` can be used '
          'anywhere as an identifier.',
        );
      case DartKeywordReserveType.contextual:
        print(
          '`${asyncKeyword.name}` can be used '
          'as an identifier except in specific contexts.',
        );
      case DartKeywordReserveType.builtInIdentifier:
        print(
          '`${asyncKeyword.name}` can\'t be used '
          'as a type name or import prefix.',
        );
      case DartKeywordReserveType.reserved:
        print(
          '`${asyncKeyword.name}` can\'t be used '
          'as an identifier at all.',
        );
    }
  }
}

Keywords might have associated documentation links that link to official information or guidelines about their usage. Access these through the documentationLinks instance property.

import 'package:dart_keywords/dart_keywords.dart';

void main() {
  final keywords = DartKeywords.forLatest();
  final classKeyword = keywords.byName('class');

  if (classKeyword != null && classKeyword.documentationLinks.isNotEmpty) {
    print('Learn more about `${classKeyword.name}`:');
    for (final link in classKeyword.documentationLinks) {
      print('  - $link');
    }
  }
}
1
likes
160
points
18
downloads

Publisher

verified publisherdartcommunity.dev

Weekly Downloads

Information about Dart keywords by language version.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

language_version, meta

More

Packages that depend on dart_keywords