Firebase 颤振:添加TextField并从中获取值

Firebase 颤振:添加TextField并从中获取值,firebase,flutter,dart,firebase-storage,textfield,Firebase,Flutter,Dart,Firebase Storage,Textfield,我试图添加两个文本字段,其中将有两个部分。其中一个是学生号,第二个是学校号 当我在学生号的文本字段中写1234,在学校号的文本字段中写4321时,我必须得到它们并将它们放入代码中,如图所示 这是我在这里使用的代码块 class DocUploadScreen extends StatefulWidget { createState() => _DocUploadScreenState(); } class _Doc

我试图添加两个文本字段,其中将有两个部分。其中一个是学生号,第二个是学校号

当我在学生号的文本字段中写1234,在学校号的文本字段中写4321时,我必须得到它们并将它们放入代码中,如图所示

这是我在这里使用的代码块

        class DocUploadScreen extends StatefulWidget {
        createState() => _DocUploadScreenState();
            }

         class _DocUploadScreenState extends State<DocUploadScreen> {

         File _imageFile;

         Future<void> _pickImage(ImageSource source) async {
         File selected = await ImagePicker.pickImage(source: source);

         setState(() {
         _imageFile = selected;
          });
            }

         void _clear() {
         setState(() => _imageFile = null);
              }

         @override
         Widget build(BuildContext context) {
         return Scaffold(
         appBar: AppBar(
         title: Text("FÖY YÜKLEME EKRANI"),
           ),
           bottomNavigationBar: BottomAppBar(
           child: Row(
           crossAxisAlignment: CrossAxisAlignment.center,
           mainAxisAlignment: MainAxisAlignment.spaceEvenly,
           children: <Widget>[
             IconButton(
             icon: Icon(
             Icons.photo_camera,
             size: 30,
              ),
                onPressed: () => _pickImage(ImageSource.camera),
                color: Colors.blue,
              ),
                 IconButton(
                 icon: Icon(
                  Icons.photo_library,
                  size: 30,
                 ),
                    onPressed: () => _pickImage(ImageSource.gallery),
                    color: Colors.red,
                      ),
                         ],
                            ),
                                ),
                        body: ListView(
                        children: <Widget>[
                          if (_imageFile != null) ...[
                            Container(
                             padding: EdgeInsets.all(32), child: Image.file(_imageFile)),
                              Row(
                               mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                               children: <Widget>[
                               FlatButton(
                               color: Colors.blueAccent,
                                textColor: Colors.white,
                                child: Icon(Icons.refresh),
                                 onPressed: _clear,
                                   ),
                                     ],
                                        ),
                                           Padding(
                                           padding: const EdgeInsets.all(32),
                                           child: Uploader(
                                           file: _imageFile,
                                            ),
                                                )
                                                   ]
                                                       ],
                                                            ),
                                                                );
                                                                   }
                                                                      }

            class Uploader extends StatefulWidget {
            final File file;

             Uploader({Key key, this.file}) : super(key: key);

             createState() => _UploaderState();
                }

               class _UploaderState extends State<Uploader> {
               final FirebaseStorage _storage =
                FirebaseStorage(storageBucket: 'gs://emo-is0.appspot.com');

                 StorageUploadTask _uploadTask;

                  _startUpload() async {
我这里有两个问题

  • 我需要放置文本字段,以便获取值并放置在下面所示的位置
  • 如何从文本字段中获取值并将其显示?还有,我如何在文本字段中使用验证器,因为必须同时提供学校和学生编号才能用于上传到存储

  • 请指教

    如果要从textfield检索值,最好的方法是使用TextEditingController,您将控制器传递到textfield,您可以通过使用带有文本值的控制器来访问文本

    TextEditingController controller = TextEditingController():
    
    TextField(
     controller: controller,
    )
    
    要访问文本,请使用controller.text,如果需要,您甚至可以更新文本的值


    我不确定您对验证器的确切含义。

    您的第一个问题非常令人困惑。TextField是一个小部件,因此它将被放置在小部件build(){}中

    如果您不理解小部件是什么,我建议您阅读。如果你想要的是“在UI上放在哪里”,那么这取决于你


    对于第二个问题,作为@ayad的答案,请使用一个包含Textfield值的TextEditingController。对于TextField的验证,还有一个关于它的问题。

    在我的代码块中,我应该将TextField的这些代码放在哪里。带验证器的文本字段必须用值填充。如果出现空文本字段,则ıt应给出错误,说明文本字段不能为空
    TextEditingController controller = TextEditingController():
    
    TextField(
     controller: controller,
    )