#flutter #dart
Вопрос:
Просто хотел бы создать свою собственную версию toString
на пользовательском типе.
Похоже, я здесь что-то упускаю.
extension on WeatherResponse {
@override
String toString() {
return "City Name is: $cityName";
}
}
Я получаю ошибку:
The method doesn't override an inherited method.
Try updating this class to match the superclass, or removing the override annotation.dartoverride_on_non_overriding_member
Extensions can't declare members with the same name as a member declared by 'Object'.
Try specifying a different name for the member.dartextension_declares_member_of_object
The declaration 'toString' isn't referenced.
Try removing the declaration of 'toString'.
Комментарии:
1. Используйте tostring() в нижнем регистре. Ошибка ясно говорит о том, что вы не можете объяснить причину.
2. @HuthaifaMuayyad, даже если у класса
WeatherResponse
естьtoString
метод3. Точно, там есть одно определение. Вы не можете определить другой с тем же именем в расширении.
4. Спасибо всем, исходящее от Swift, где именно так используются расширения, поэтому вам нужно настроить мышление.
Ответ №1:
если вы хотите перезаписать метод toString, то вместо объявления его в классе расширения поместите его в фактическое определение класса. подобный этому;
class YourClass extends Object {
@override
String toString() ...
}