Как сохранить обратную равновесие при рефакторинге имени параметра в опубликованном пакете Flutter/Dart?
Я участвую в моей первой библиотеке флаттера с открытым исходным кодом, и мне пришлось изменить некоторые имена переменных, чтобы сделать проект согласованным.
Владелец библиотеки указал, что измененные параметры будут нарушать работу приложений, обновляющихся с предыдущей версии. Он попросил меня использовать псевдоним и установить устаревшие переменные как устаревшие, чтобы разработчики могли изменить его на следующую основную версию.
Я немного погуглил, но не могу найти учебник о том, как сделать это профессионально. Я вообще не могу найти информацию об псевдонимах.
Кто-нибудь может помочь мне помочь сообществу?
Редактировать: до и после конструктора
до:
CarouselSlider({
@required
this.items,
this.viewportFraction: 0.8,
this.initialPage: 0,
this.aspectRatio: 16/9,
this.height,
this.realPage: 10000,
this.autoPlay: false,
this.interval: const Duration(seconds: 4),
this.reverse: false,
this.autoPlayCurve: Curves.fastOutSlowIn,
this.autoPlayDuration: const Duration(milliseconds: 800),
this.updateCallback,
this.distortion: true,
})
После:
CarouselSlider({
@required
this.items,
this.height,
this.aspectRatio: 16/9,
this.viewportFraction: 0.8,
this.initialPage: 0,
this.realPage: 10000,
this.reverse: false,
this.autoPlay: false,
this.autoPlayInterval: const Duration(seconds: 4),
this.autoPlayAnimationDuration: const Duration(milliseconds: 800),
this.autoPlayCurve: Curves.fastOutSlowIn,
this.enlargeCenterPage: false,
this.pauseAutoPlayOnTouch,
this.onPageChangedCallback,
})
Рефакторированные имена:
interval --> autoPlayInterval
distortion --> enlargeCenterPage
autoPlayDuration --> autoPlayAnimationDuration
updateCallback --> onPageChanged
1 ответ
Решение
Пример для interval
имущество
CarouselSlider({
@required
this.items,
this.viewportFraction: 0.8,
this.initialPage: 0,
this.aspectRatio: 16/9,
this.height,
this.realPage: 10000,
this.autoPlay: false,
@Deprecated('use "autoplayInterval" instead')
Duration interval: const Duration(seconds: 4),
Duration autoplayInterval,
this.reverse: false,
this.autoPlayCurve: Curves.fastOutSlowIn,
this.autoPlayDuration: const Duration(milliseconds: 800),
this.updateCallback,
this.distortion: true,
}) : assert(interval == null || autoplayInterval == null, 'Use either "interval" or "autoPlayInterval", but not both.'), autoplayInterval = autoplayInterval ?? interval;