Flutter 如何从文本字段获取值
我花了很长时间试图从一个小部件、一列中的4个文本字段中获取4个值 我是一个新手,在尝试这么做之前,我只接受了6个小时的训练 我需要的只是这样:一种方法是使用我的应用程序提取某人的输入,触摸扁平按钮,进入“AlertDialog”,输入“表单”,在4行(foto、artigo、quantidade、PreCotal)上输入4个值,然后单击Raised按钮上的“plus”按钮。我需要这4个值,但到目前为止,我只能得到空的4个插槽列表或“[null,,,,,] 太赫兹提前 我在整个项目上浪费了将近10个小时,所以希望有人能给我指出正确的方向 这是我的代码: “主飞镖”Flutter 如何从文本字段获取值,flutter,Flutter,我花了很长时间试图从一个小部件、一列中的4个文本字段中获取4个值 我是一个新手,在尝试这么做之前,我只接受了6个小时的训练 我需要的只是这样:一种方法是使用我的应用程序提取某人的输入,触摸扁平按钮,进入“AlertDialog”,输入“表单”,在4行(foto、artigo、quantidade、PreCotal)上输入4个值,然后单击Raised按钮上的“plus”按钮。我需要这4个值,但到目前为止,我只能得到空的4个插槽列表或“[null,,,,,] 太赫兹提前 我在整个项目上浪费了将近10
class\u ecrainicalState扩展状态{
final _formKey=GlobalKey();
字符串fotografia,nomedoproduto;
int quantidade,precotal;
变量列表实际值=[“agua.png”、“agua”、“7”、“14”]、[“bacalhau.png”、“bacalhau”、“2”、“42”]、[“frango.png”、“frango”、“3”、“18”]、[“maca.png”、“maca”、“4”、“4”];
TextEditingController-controlofoto=TextEditingController();
TextEditingController-controloartigo=TextEditingController();
TextEditingController-controloquantidade=TextEditingController();
TextEditingController ControlOpRetotal=TextEditingController();
字符串obterfotografia=“”;
字符串obterartigo=“”;
字符串obterquantidade=“”;
字符串obterprecotal=“”;
亚音阶(弦乐){
设置状态(()=>obterfotografia=valor);
回盲照片;
}
submicaoartigo(弦乐){
设置状态(()=>obterartigo=valor);
}
次量化(字符串值){
设置状态(()=>obterquantidade=valor);
}
总计(字符串值){
设置状态(()=>obterprecotal=valor);
印刷品(总计);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:文本(“产品列表”),
正文:ListView(
收缩膜:对,
填充:LTRB(2.0,10.0,2.0,10.0)中的常数边集,
儿童:[
产品箱(
fotografia:“agua.png”,
nomedoproduto:“Agua”,
quantidade:7,
总数:14,
),
产品箱(
fotografia:“bacalhau.png”,
诺梅多普罗杜托:“巴卡卢”,
quantidade:2,
总数:42,
),
产品箱(
fotografia:“frango.png”,
诺梅多普罗杜托:“弗兰戈”,
quantidade:3,
总数:18
),
产品箱(
fotografia:“maca.png”,
诺梅多普罗杜托:“玛卡”,
quantidade:4,
总数:4,
),
],
),
浮动操作按钮:浮动操作按钮(
子:图标(Icons.add),
已按下:(){
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
内容:表格(
键:_formKey,
子:SingleChildScrollView(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
填充物(
填充:边缘组。对称(水平:25.0),
孩子:TextField(
装饰:新的输入装饰(
hintText:“atum,acucar disponiveis”),
最大长度:25,
inputFormatters:[WhiteListingDeputFormatter(RegExp(“[a-z.]”)],
控制器:controlofoto,
提交:提交至,
),
),
填充物(
填充:边缘组。对称(水平:25.0),
孩子:TextField(
装饰:新的输入装饰(
hintText:“atum,acucar disponiveis”),
最大长度:25,
inputFormatters:[WhiteListingDeputFormatter(RegExp(“[a-z]”)),
控制器:controloartigo,
提交人:Submitcao Artigo,
),
),
填充物(
填充:边缘组。对称(水平:25.0),
孩子:TextField(
装饰:新的输入装饰(
hintText:“一个数量,一个数字。”,
inputFormatters:[WhiteListingDeputFormatter.digitsOnly],
键盘类型:TextInputType.number,
最大长度:2,
控制器:controloquantidade,
提交:次量化,
),
),
填充物(
填充:边缘组。对称(水平:25.0),
孩子:TextField(
装饰:新的输入装饰(
hintText:“Indique o preco total,apenas numero”),
inputFormatters:[WhiteListingDeputFormatter.digitsOnly],
键盘类型:TextInputType.number,
马克斯伦特
class _EcrainicialState extends State<Ecrainicial> {
final _formKey = GlobalKey<FormState>();
String fotografia, nomedoproduto;
int quantidade, precototal;
var listaactual = <List>[["agua.png","Agua","7","14"],["bacalhau.png","Bacalhau","2","42"],["frango.png", "Frango","3","18"],["maca.png","Maca","4"," 4"]];
TextEditingController controlofoto = TextEditingController();
TextEditingController controloartigo = TextEditingController();
TextEditingController controloquantidade = TextEditingController();
TextEditingController controloprecototal = TextEditingController();
String obterfotografia = "";
String obterartigo = "";
String obterquantidade = "";
String obterprecototal = "";
submicaofoto(String valor) {
setState(() => obterfotografia = valor);
return obterfotografia;
}
submicaoartigo(String valor) {
setState(() =>obterartigo = valor);
}
submicaoquantidade(String valor) {
setState(() => obterquantidade = valor);
}
submicaoprecototal(String valor) {
setState(() => obterprecototal = valor);
print(obterprecototal);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Lista de produtos")),
body: ListView(
shrinkWrap: true,
padding: const EdgeInsets.fromLTRB(2.0, 10.0, 2.0, 10.0),
children: <Widget>[
ProductBox (
fotografia: "agua.png",
nomedoproduto: "Agua",
quantidade: 7,
precototal: 14,
),
ProductBox(
fotografia: "bacalhau.png",
nomedoproduto: "Bacalhau",
quantidade: 2,
precototal: 42,
),
ProductBox(
fotografia: "frango.png",
nomedoproduto: "Frango",
quantidade: 3,
precototal: 18
),
ProductBox(
fotografia: "maca.png",
nomedoproduto: "Maca",
quantidade: 4,
precototal: 4,
),
],
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
content: Form(
key: _formKey,
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(horizontal: 25.0),
child: TextField(
decoration: new InputDecoration(
hintText: 'atum, acucar disponiveis'),
maxLength: 25,
inputFormatters: [WhitelistingTextInputFormatter(RegExp("[a-z.]"))],
controller: controlofoto,
onSubmitted: submicaofoto,
),
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 25.0),
child: TextField(
decoration: new InputDecoration(
hintText: 'atum, acucar disponiveis'),
maxLength: 25,
inputFormatters: [WhitelistingTextInputFormatter(RegExp("[a-z]"))],
controller: controloartigo,
onSubmitted: submicaoartigo,
),
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 25.0),
child: TextField(
decoration: new InputDecoration(
hintText: 'Indique a quantidade, apenas numero .'),
inputFormatters: [WhitelistingTextInputFormatter.digitsOnly],
keyboardType: TextInputType.number,
maxLength: 2,
controller: controloquantidade,
onSubmitted: submicaoquantidade,
),
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 25.0),
child: TextField(
decoration: new InputDecoration(
hintText: 'Indique o preco total, apenas numero'),
inputFormatters: [WhitelistingTextInputFormatter.digitsOnly],
keyboardType: TextInputType.number,
maxLength: 2,
controller: controloprecototal,
onSubmitted: submicaoquantidade,
),
),
new RaisedButton(
child: Icon(Icons.add),
onPressed: () {
print(submicaofoto);
Artigo.adicionarartigo(obterfotografia, obterartigo, obterquantidade, precototal, listaactual);
}
),
],
),
),
),
);
},
);
},
)
);
}
}
TextEditingController controlofoto = TextEditingController();
TextField(
decoration: InputDecoration(
hintText: 'atum, acucar disponiveis'),
maxLength: 25,
inputFormatters: [WhitelistingTextInputFormatter(RegExp("[a-z.]"))],
controller: controlofoto,
),
String someValue = controlofoto.text