prefer-double-quotes

Same as prefer_double_quotes in Dart lints

Group
Style
Path
lint/style/prefer-double-quotes
Default
Off, opt in
Origin
Dart lints
Rule
348 of 512

Flags single-quoted string literals that could use double quotes without needing an escape.

Prefer double quotes unless the string's text contains a double quote:

useStrings('should be double quote', r'should be double quote'); // flagged
useStrings("should be double quote", 'contains " quote');        // fine

Raw and multiline literals are checked too. An interpolated literal is left alone when an interpolated expression contains another string literal, and a literal nested inside another literal's interpolation is never flagged, since swapping the quotes there would clash with the outer delimiters. Each part of an adjacent-string concatenation is checked on its own. This rule is the opposite of prefer-single-quotes; enable only one.

Invalid

example.dartdart
void use(Object o) {}

void main() {
  var name = "Ann";
  use('single');
  use(r'raw single');
  use('hello $name');
  use('''multiline''');
  use("double" 'single');
  use('${name.length} chars');
}
Unnecessary use of single quotes.
4 var name = "Ann";
5 use('single');
Unnecessary use of single quotes.
5 use('single');
6 use(r'raw single');
Unnecessary use of single quotes.
6 use(r'raw single');
7 use('hello $name');
Unnecessary use of single quotes.
7 use('hello $name');
8 use('''multiline''');
Unnecessary use of single quotes.
8 use('''multiline''');
9 use("double" 'single');
Unnecessary use of single quotes.
9 use("double" 'single');
10 use('${name.length} chars');

Valid

example.dartdart
import "dart:core";

void use(Object o) {}

void main() {
  var name = "Ann";
  use("double");
  use('say "hi"');
  use('say \"hi\"');
  use('Hello ${name.isEmpty ? "x" : "y"}');
  use("outer ${'nested'}");
  use('contains "$name"');
  use(r"raw");
}

void patternStrings(Object value) {
  switch (value) {
    case "a${'b'}":
    case "a${'b ${'c'}'}":
      break;
  }
}

Configure prefer-double-quotes

Set its severity in falcon.json. See the configuration guide.

falcon.jsonjson
{
  "linter": {
    "rules": {
      "style": {
        "prefer-double-quotes": "error"
      }
    }
  }
}

Or silence one occurrence with a suppression comment; the reason is required.

example.dartdart
// falcon-ignore lint/style/prefer-double-quotes: <reason>
  • prefer-early-return

    Flags a trailing if that wraps multiple statements in a void function.

  • prefer-equatable-mixinequatable

    Prefer EquatableMixin to directly extending package:equatable's Equatable.

  • prefer-final-fieldsprefer_final_fieldsrecommended

    Flags a private field that is initialized but never reassigned, so it could be final (prefer-final-fields, adopted from package:lints).

  • prefer-final-in-for-eachprefer_final_in_for_eachrecommended

    Prefer final for a for-each loop variable that is never reassigned.

  • prefer-final-localsprefer_final_localsrecommended

    Prefer final for local variable declarations that are never reassigned.

  • prefer-final-parametersprefer_final_parameters

    Prefer final for parameters that are never reassigned.

  • prefer-firstprefer-first

    Flags [0] index access that should use the .first getter.

  • prefer-for-in

    Flags zero-based, unit-step index loops over a syntactically known list.