Dart строки могут быть сырыми или .. не сырой (нормальный? приготовленный? интерпретируемый? Нет формального имени). Я пойду с «интерпретируемым» здесь, потому что он описывает проблему, которая у вас есть.
В исходной строке «$» и «\» ничего особенного не имеют, они просто символы, как и любой другой. В интерпретируемой строке «$» запускает интерполяцию, а «\» запускает escape.
Поскольку вы хотите интерполяцию для «$ долларов», вы не можете использовать «$» в буквальном смысле, так что вам нужно, чтобы избежать его:
int dollars = 42;
print("I have \$$dollars.");
Если вы не хотите использовать побег , вы можете объединить строку из сырых и интерпретируемых частей:
int dollars = 42;
print(r"I have $" "$dollars.");
Два смежных строковых литералов объединяются в одну строку, даже если они имеют разные типы строки.
Вы пробовали 'print (" I have \ $ dollars. "); '? (Я вообще не знаю дротиков, я просто догадываюсь) – FrustratedWithFormsDesigner