Prefer adjacent string concatenation over using the `+` operator. == Why is this an issue? Given two string literals, Dart allows concatenation: 1. via the `+` operator over strings, e.g. `'Hello' + 'World'` 2. via adjacent string literals, e.g. `'Hello' 'World'` The `+` operator concatenates any two expressions of type `String`, irrespective of whether the two expressions are literals or not. This means that all the following expressions are valid: * `'a literal' + 'another literal'` * `'a literal' + aVariable` * `aVariable + 'a literal'` On the other hand, adjacent string literals are a specific form of concatenation that only works with string literals and interpolated strings, which means that only the first two of the following expressions are valid: * `'a literal' 'another literal'` * `'a literal' 'an interpolated ${"string"}'` * `'a literal' aVariable` * `aVariable 'a literal'` Because concatenation of strings with variable elements should be done via https://dart.dev/language/built-in-types#strings[string interpolation] (as encouraged by S3512), consistently using adjacent string literals for concatenation of string without the variable elements (i.e. literals only) makes the code more readable and homogeneous, since a single syntax is used for all concatenations. == How to fix it Remove the `+` operator to have string literals adjacent to each other. === Code examples ==== Noncompliant code example [source,dart,diff-id=1,diff-type=noncompliant] ---- String message = 'Hello' + 'World'; ---- ==== Compliant solution [source,dart,diff-id=1,diff-type=compliant] ---- String message = 'Hello' 'World'; ---- == Resources === Documentation * Dart Docs - https://dart.dev/tools/linter-rules/prefer_adjacent_string_concatenation[Dart Linter rule - prefer_adjacent_string_concatenation] * Dart Docs - https://dart.dev/guides/language/language-tour#strings[Dart Language Tour - Strings] === Related rules * S3512 - Interpolation should be used instead of String concatenation ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message * String literals shouldn't be concatenated by the '+' operator. === Highlighting * The `+` operator in the string concatenation. If a non-parenthesized sequence of concatenations is detected, a single issue is reported: e.g. in `'a' + 'b' + 'c'`, a single issue, on the first `+` operator, is reported. In parenthesized expressions, only innermost concatenations are reported: e.g. in `'a' + ('b' + 'c')`, only the inner `+` operator is reported. ''' == Comments And Links (visible only on this page) endif::env-github,rspecator-view[]