Пометка устаревания в Dart
Пометка @deprecated вешается на член программы -
функцию, метод, класс или поле. В скобках можно передать
строку для отчета анализатора. Сборка обычно проходит,
но обращение к помеченному объявлению подсвечивается
предупреждением.
На устаревший расчет скидки можно повесить явный текст и оставить новую функцию с тем же смыслом:
@deprecated('use computeRebate instead')
int flatRebate(int price) {
return price ~/ 10;
}
int computeRebate(int price) {
return price ~/ 10;
}
На другую устаревшую команду достаточно короткого сообщения без отдельных параметров уровня:
@deprecated('flat fee helper is obsolete')
int wrapFee(int amount) {
return amount + 2;
}
int packFee(int amount) {
return amount + 2;
}
Если в программе остается вызов устаревшей функции, анализатор предупреждает, но программа все равно запускается. Проверить это можно на простом вызове:
@deprecated('prefer trimTitle for new code')
String legacyCaption(String raw) {
return raw.trim();
}
String trimTitle(String raw) {
return raw.trim();
}
void runSample() {
String text = legacyCaption(' note ');
print(text);
}
Выполнение печатает строку без пробелов по краям, а рядом с вызовом остается предупреждение об устаревшем API. Смысл аннотации именно в такой обратной связи от анализатора, а не в отдельном шаге во время выполнения.
Пометьте функцию подсчета дней в поездке как устаревшую с текстом о замене на новую функцию с тем же смыслом. Оставьте один вызов старой функции и убедитесь, что анализатор выдает предупреждение.