【发布时间】:2023-04-05 11:04:01
【问题描述】:
这是我的架构,我有两个 statfull 小部件:ProfilePicture, RoundedProfilePicture。 ProfilePicture 是一个有状态的小部件,它有复杂的自定义代码,很容易出错,所以我不想复制粘贴它,它利用来自 Picture 抽象类的变量。 (即获取服务器数据并将它们存储在Picture 的变量中)。我想做的是从这个小部件状态扩展,以便我可以创建一个新的小部件RoundedProfilePicture。这个小部件状态将基本上利用来自ProfilePicture 状态的复杂代码进行继承,并为其添加一些额外的小逻辑。所以我认为继承是这里的最佳选择。这是我到目前为止所尝试的
class ProfilePictureState extends State<ProfilePicture> implements Picture{
// SOME LONG COMPLICATED 500 LINE OF CODE
}
class RoundedProfilePictureState extends ProfilePictureState {
@override
void initState() {
super.initState(); // this calls ProfilePictureState.initState() call. I want to call State<ProfilePicture>.initState()
}
}
我的问题是 initState() 无效 RoundedProfilePictureState 要求我拨打 super.initState() 电话。此调用发出ProfilePictureState.initState() 调用。我想打电话给State<ProfilePicture>.initState(),因为我想在我的初始化状态调用中添加不同的逻辑。所以结构是:
----abstract State class
---ProfilePictureState
--RoundedProfilePictureState
如何从RoundedProfilePictureState 调用抽象State 类的initState 方法?这可能吗?
【问题讨论】:
-
如果你必须调用super-super,层次结构设计错误。调用 super 意味着“我就像我的父类,除了我添加了这个额外的行为”。如果您需要忽略父类并跳到祖父类,那就大错特错了。
-
同意。我的层次结构设计有缺陷