flutter - 哪个更好的静态函数返回小部件或无状态小部件
问题描述
从标题中可以清楚地看出,哪种方法更好,类中的静态函数返回自定义小部件,还是无状态小部件类?
静态函数的示例返回自定义小部件:
class FormComponent {
static Widget defaultFromField(
{@required TextEditingController controller,
@required TextInputType textInputType,
@required Icon prefixIcon,
Icon suffixIcon,
Function suffixIconPressed,
@required Function validate,
Function onTap,
Function onChange,
bool isObscureText = false,
@required String labelText,
o}) {
return TextFormField(
controller: controller,
keyboardType: textInputType,
obscureText: isObscureText,
validator: validate,
onTap: onTap,
onChanged: onChange,
decoration: InputDecoration(
prefixIcon: prefixIcon,
suffixIcon: (suffixIcon != null)
? IconButton(onPressed: suffixIconPressed, icon: suffixIcon)
: null,
labelText: labelText,
labelStyle: const TextStyle(fontSize: AppDimensions.fontSize_18),
border: const OutlineInputBorder()),
);
}
}
无状态小部件类的示例:
class DefaultFormField extends StatelessWidget {
final TextEditingController controller;
final TextInputType textInputType;
final Icon prefixIcon;
final Icon suffixIcon;
final Function suffixIconPressed;
final Function validate;
final Function onTap;
final Function onChange;
final bool isObscureText = false;
final String labelText;
const DefaultFormField({
Key key,
this.controller,
this.textInputType,
this.prefixIcon,
this.suffixIcon,
this.suffixIconPressed,
this.validate,
this.onTap,
this.onChange,
this.labelText,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return TextFormField(
controller: controller,
keyboardType: textInputType,
obscureText: isObscureText,
validator: validate,
onTap: onTap,
onChanged: onChange,
decoration: InputDecoration(
prefixIcon: prefixIcon,
suffixIcon: (suffixIcon != null)
? IconButton(onPressed: suffixIconPressed, icon: suffixIcon)
: null,
labelText: labelText,
labelStyle: const TextStyle(fontSize: AppDimensions.fontSize_18),
border: const OutlineInputBorder()),
);
}
}
解决方案
推荐阅读
- html - 如何切换开/关电话:使用基于浏览器宽度的 CSS 在网页上的链接?
- scala - 如何使用案例类类型参数创建数据集?(无法找到 T 型编码器)
- c# - 正则表达式查找带有参数的嵌套函数定义
- java - 多个对象如何在没有实例引用的情况下向一个对象发送通知(在 java 中)?
- java - 如何独立于语言环境在字符串中查找括号?
- apache-kafka - 重试消费来自 Kafka 主题的消息
- c# - PayPal IPN 不发送通知
- node.js - 使用 ContentType image/jpeg 将图像上传到 S3 - nodejs 并做出反应?
- python - 我想使用 django 将 pdf 格式文件上传到 xampp mysql 数据库表中
- java - 如何在 Thymeleaf 上使用多个“组件”(文件)和动态数据?