[英]How to reuse non Widget classes in Flutter?
我知道我们应该在 Flutter中使用 inheritance 的合成。 当我们谈论Widgets
时,这很有效。
但是,当 class 不是Widget
时,我该怎么办? 例如,我希望某些屏幕中的TextFields
在其InputDecoration
中有一组特定的值。
我应该扩展InputDecoration
吗? 如何在许多 TextField 中重用这个特定的InputDecoration
?
编辑:按照 Rémi Rousselet 的指导,我扩展InputDecoration
。 这是最终结果:
class LoginInputDecoration extends InputDecoration {
@override
InputBorder get errorBorder =>
UnderlineInputBorder(borderSide: BorderSide(color: AppColors.danger));
@override
EdgeInsetsGeometry get contentPadding => const EdgeInsets.symmetric(
horizontal: Dimens.halfSpace,
vertical: Dimens.singleSpace,
);
@override
InputBorder get border =>
UnderlineInputBorder(borderSide: BorderSide(color: AppColors.primary));
@override
TextStyle get labelStyle =>
TextStyle(color: AppColors.white, decorationColor: AppColors.white);
@override
InputBorder get enabledBorder =>
UnderlineInputBorder(borderSide: BorderSide(color: AppColors.primary));
@override
TextStyle get hintStyle =>
TextStyle(color: AppColors.white, decorationColor: AppColors.white);
LoginInputDecoration({String labelText}) : super(labelText: labelText);
}
当然。 实际上,“请勿扩展窗口小部件”仅限于此:窗口小部件。
“限制”背后的真正原因是,由于build
工作原理,扩展窗口小部件不允许正确更改窗口小部件的样式。 因此扩展小部件没有任何意义。
但是,该原因不适用于其他类型的对象。 所以别担心,继续前进!
Flutter中已经有很多示例。 例如, Alignment
是的一个子类AlignmentGeometry
。
我扩展了装饰 class、TextInputFormatter 和 TextFieldValidator class,在前端 UI 开发方面取得了巨大成功,并且易于推荐。
装饰 class 在容器周围放置虚线边框。 TextInputFormatter 用于信用卡号输入 TextFieldValidator 用于信用卡到期日验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.