【发布时间】:2020-06-17 01:10:24
【问题描述】:
为了这个问题,我在这里简化了我的案例。我想重用一个打开文本字段对话框的按钮小部件。如果按钮接收字符串数据值,则使用文本键盘,如果数据类型为 int,则使用数字键盘。我怎样才能做到这一点?这是我的代码
我的屏幕
class MyScreen1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: ReuseButton(value: 'pp'), //passing String value
);
}
}
可重复使用的按钮
class ReuseButton extends StatelessWidget {
final dynamic value; // receiving unspecified data type
const ReuseButton({this.value});
@override
Widget build(BuildContext context) {
return FlatButton(
child: Text('Enter Value'),
onPressed: () async {
String s = await textFieldDialog(
context: context,
initialValue: '',
keyboardType: TextInputType.numberWithOptions(
decimal: true), //here to do comparison
title: 'Equal to');
print(s);
},
);
}
}
我已经尝试过制作一个简单类的模型
class SpecVal<T> {
T data;
SpecVal(this.data);
}
然后将我屏幕中的这些数据传递给按钮小部件
ReuseButton(value: SpecVal<String>('some value'))
但后来我很难找出 SpecVal 在按钮小部件中使用什么数据类型来进行比较
【问题讨论】: