flutter - Flutter Key类型如何根据类型使key成为必需的?
问题描述
我在需要颤振键方面遇到了一些问题,因为我想创建一个自定义小部件,该小部件具有基于类型所需的键我该怎么做?
class CustomTextField extends StatefulWidget {
CustomTextField(
{Key? key,
this.label = "",
required this.type,
required this.labelText,
required this.hintText,
required this.validationText,
type = "password" ? required this.validField : this.validField = "",
this.helpTxt = ""})
: super(key: key);
final String label;
final String labelText;
final String hintText;
final String validationText;
final String validField;
final String helpTxt;
final String type;
@override
_CustomTextField createState() => _CustomTextField();
}
解决方案
您可以使用ValueKey
在作为参数传递的值上生成不同的键。对于您的情况,您可以提供以下内容:-
class CustomTextField extends StatefulWidget {
CustomTextField(
{Key? key,
this.label = "",
required this.type,
required this.labelText,
required this.hintText,
required this.validationText,
type = "password" ? required this.validField : this.validField = "",
this.helpTxt = ""})
: super(key: ValueKey(this.type));
final String label;
final String labelText;
final String hintText;
final String validationText;
final String validField;
final String helpTxt;
final String type;
@override
_CustomTextField createState() => _CustomTextField();
}
推荐阅读
- python - Python Set_Blob_Metadata 和自身位置参数
- javascript - 通过选中复选框计算总价
- python - 如何在 Pandas DataFrame 中制作大写字母?
- angular - 为什么 Azure Web App Service 无法在它正在运行的 docker 容器中找到 ng?
- node.js - NodeJs - 如何使用socket.io将tcp数据包发送到局域网中的另一台计算机
- ssl - TLS 1.3 不适用于 Nginx 1.17.6 / Ubuntu 18.04 / OpenSSL 1.1.1
- python - 在 YAML 文件中读取配置值的适当方法
- c# - 像本地 json 文件一样从服务器读取 Json
- mysql - How to select win/loss record in mysql
- react-native - Get previously scene with react-native-router-flux