如何覆盖 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 中让 ListView 中的项目覆盖整个屏幕