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