如何覆盖 Flutter 中的 Checkbox 小部件类?

Posted

技术标签:

【中文标题】如何覆盖 Flutter 中的 Checkbox 小部件类?【英文标题】:How to override the Checkbox widget class in Flutter? 【发布时间】:2019-05-21 19:40:26 【问题描述】:

目前我已经开始使用 Flutter。

如何创建自定义小部件或覆盖 Checkbox 小部件类? 我想这样做的原因是我想自定义:

复选框 初始颜色 悬停颜色 专注 按下 已启用选择 已禁用选择 刻度线渲染

【问题讨论】:

您可以嵌入它们或复制源并在那里修改它。这些小部件并不是真正为扩展而设计的。 我 edited your question,改进其格式,或 its quality 以帮助人们理解您的问题,并帮助您获得适当的答案。但您仍可能需要添加更多信息才能让您的问题完全得到解决。 @GunterZöchbauer 或者其他人,你知道为什么不建议扩展小部件吗? 这和 Flutter 没有太大关系。继承只是过度使用。继承仅适用于真正的is-A 关系,不适用于does-a-bit-of-the-same 关系。通常如果你认为你需要继承,你可能错了。组合更强大,尤其是从长远来看。 【参考方案1】:

Flutter 更倾向于组合而不是继承,因此扩展 Checkbox 可能不是正确的做法。

您应该创建一个新的StatefulWidget。 在该州的build 方法中,您可以使用自定义参数创建Checkbox,或者呈现完全自定义的内容。 因为您的列表包含非常自定义的内容,例如更改刻度图标,所以您需要使用后者。

这意味着您将构建一个完全自定义的复选框小部件,而无需依赖现有的复选框。 令人兴奋!

但是,您可能不想从头开始,因此请查看现有 Checkbox 的 implementation。 可以复制该代码,然后根据需要对其进行自定义。

还有一件事:完成后,考虑将您的小部件以Pub package 的形式分享给其他 Flutter 程序员,如果他们也想这样做,他们可以从负担中解脱出来。

【讨论】:

以上是关于如何覆盖 Flutter 中的 Checkbox 小部件类?的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖 Flutter 中的“返回”按钮? [复制]

如何在 Flutter 中实现 CheckBox?

如何在 Flutter 中的盒子装饰上的图像上添加不透明覆盖

如何在 Flutter 中让 ListView 中的项目覆盖整个屏幕

如何使用 Flutter 中的 Stack 小部件部分覆盖视图

如何在 Container 中垂直扩展 TextField 以覆盖 Flutter 中的所有可用空间