用户操作后如何在屏幕上添加更多小部件
How to add more more widgets on screen in flutter, after user action
我希望此表单的文本字段在用户提交数据时一个接一个地出现在屏幕上。
例如,如下图所示。
更新 使用列表
List<TextEditingController> controllers = [TextEditingController()];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
...List.generate(
controllers.length,
(index) => TextField(
autofocus: true,
controller: controllers[index],
onSubmitted: (v) {
controllers.add(TextEditingController());
setState(() {});
},
),
),
],
),
);
}
您可以在状态上创建 bool
并使用它来控制电子邮件的可见性 TextFiled
bool showEmailField = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Column(
children: [
TextField(
onSubmitted: (value) {
print("call Next one");
setState(() {
showEmailField = true;
});
},
),
if (showEmailField) TextField(),
],
),
);
}
对于动画,您可以使用ScaleTransition
。更多的widget,可以在build方法下创建list,使用conditional state生成widget。
我希望此表单的文本字段在用户提交数据时一个接一个地出现在屏幕上。
例如,如下图所示。
更新 使用列表
List<TextEditingController> controllers = [TextEditingController()];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
...List.generate(
controllers.length,
(index) => TextField(
autofocus: true,
controller: controllers[index],
onSubmitted: (v) {
controllers.add(TextEditingController());
setState(() {});
},
),
),
],
),
);
}
您可以在状态上创建 bool
并使用它来控制电子邮件的可见性 TextFiled
bool showEmailField = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Column(
children: [
TextField(
onSubmitted: (value) {
print("call Next one");
setState(() {
showEmailField = true;
});
},
),
if (showEmailField) TextField(),
],
),
);
}
对于动画,您可以使用ScaleTransition
。更多的widget,可以在build方法下创建list,使用conditional state生成widget。