isValidDartIdentifier method

bool isValidDartIdentifier(
  1. String name
)

Check if a string is a valid Dart identifier

Implementation

bool isValidDartIdentifier(String name) {
  if (name.isEmpty) return false;

  // Must start with letter or underscore
  if (!RegExp(r'^[a-zA-Z_]').hasMatch(name)) return false;

  // Can only contain letters, digits, and underscores
  if (!RegExp(r'^[a-zA-Z_][a-zA-Z0-9_]*$').hasMatch(name)) return false;

  // Cannot be a Dart reserved word
  const reservedWords = {
    'abstract',
    'as',
    'assert',
    'async',
    'await',
    'break',
    'case',
    'catch',
    'class',
    'const',
    'continue',
    'covariant',
    'default',
    'deferred',
    'do',
    'dynamic',
    'else',
    'enum',
    'export',
    'extends',
    'extension',
    'external',
    'factory',
    'false',
    'final',
    'finally',
    'for',
    'Function',
    'get',
    'hide',
    'if',
    'implements',
    'import',
    'in',
    'interface',
    'is',
    'late',
    'library',
    'mixin',
    'new',
    'null',
    'on',
    'operator',
    'part',
    'required',
    'rethrow',
    'return',
    'set',
    'show',
    'static',
    'super',
    'switch',
    'sync',
    'this',
    'throw',
    'true',
    'try',
    'typedef',
    'var',
    'void',
    'while',
    'with',
    'yield',
  };

  return !reservedWords.contains(name);
}