Для образовательного приложения, которое я создаю, у меня есть интерфейс модуля, который требует метод copyWith
:
abstract class Module {
// ...
Module copyWith() => throw 'You should call the instance\'s copyWith.';
}
Проблема в том, что я использую пакет codegen, который генерирует метод copyWith для расширения для подклассов модуля:
part 'audio_module.g.dart';
@immutable
@CopyWith()
class AudioModule implements Module {
/* ... */
}
// GENERATED CODE - DO NOT MODIFY BY HAND
part of audio_module;
// **************************************************************************
// CopyWithGenerator
// **************************************************************************
extension AudioModuleCopyWithExtension on AudioModule {
AudioModule copyWith(/* ... */) {
return AudioModule(/* ... */);
}
}
В моем классе AudioModule
, таким образом, я получаю эту ошибку, потому что я думаю, что он не учитывает метод расширения:
Missing concrete implementation of 'Module.copyWith'.
Try implementing the missing method, or make the class abstract.
Почему это происходит, если подкласс (так или иначе) реализует copyWith
?
Спасибо
Редактировать
Обходной путь, который я в итоге использовал, заключался в том, чтобы вместо этого использовать функциональный пакет кода кода функции , который создает класс с методом copyWith, который вы затем расширяете. Без расширений.