Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何从文本字段获取值_Flutter - Fatal编程技术网

Flutter 如何从文本字段获取值

Flutter 如何从文本字段获取值,flutter,Flutter,我花了很长时间试图从一个小部件、一列中的4个文本字段中获取4个值 我是一个新手,在尝试这么做之前,我只接受了6个小时的训练 我需要的只是这样:一种方法是使用我的应用程序提取某人的输入,触摸扁平按钮,进入“AlertDialog”,输入“表单”,在4行(foto、artigo、quantidade、PreCotal)上输入4个值,然后单击Raised按钮上的“plus”按钮。我需要这4个值,但到目前为止,我只能得到空的4个插槽列表或“[null,,,,,] 太赫兹提前 我在整个项目上浪费了将近10

我花了很长时间试图从一个小部件、一列中的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