【问题标题】:Flutter dart call super of super class methodFlutter dart 调用 super 的超类方法
【发布时间】:2023-04-05 11:04:01
【问题描述】:

这是我的架构,我有两个 statfull 小部件:ProfilePicture, RoundedProfilePictureProfilePicture 是一个有状态的小部件,它有复杂的自定义代码,很容易出错,所以我不想复制粘贴它,它利用来自 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&lt;ProfilePicture&gt;.initState(),因为我想在我的初始化状态调用中​​添加不同的逻辑。所以结构是:

----abstract State class
---ProfilePictureState 
--RoundedProfilePictureState  

如何从RoundedProfilePictureState 调用抽象State 类的initState 方法?这可能吗?

【问题讨论】:

  • 如果你必须调用super-super,层次结构设计错误。调用 super 意味着“我就像我的父类,除了我添加了这个额外的行为”。如果您需要忽略父类并跳到祖父类,那就大错特错了。
  • 同意。我的层次结构设计有缺陷

标签: flutter dart super


【解决方案1】:

由于没有人回答,这就是我解决这个问题的方法。我认为这是不可能实现的。我所做的是将代码和所有变量移至mixin。这样做花了一两个小时。我实现了我的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    相关资源
    最近更新 更多