在flutter中提交数据后如何清除表单?

mar*_*ony 4 dart flutter

我正在使用 post 方法向我的后端 php 服务器提交数据。后台数据提交成功。问题是,当单击提交数据时,必须清除表单,因此用户无法再次单击提交按钮。我不知道如何在单击提交按钮后禁用清除表单字段。

import 'dart:io';

import 'package:dio/dio.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_app/ui/Home.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:path/path.dart';

import 'InputDeco_design.dart';

class Prayerequest extends StatefulWidget {
  @override
  _PrayerequestState createState() => _PrayerequestState();
}

class _PrayerequestState extends State<Prayerequest> {
  TextEditingController _name = TextEditingController();
  TextEditingController _email = TextEditingController();
  TextEditingController _phone = TextEditingController();
  TextEditingController _country= TextEditingController();
  TextEditingController _description = TextEditingController();
  //TextController to read text entered in text field
  final GlobalKey<FormState> _formkey = GlobalKey<FormState>();
  final GlobalKey<ScaffoldState> _scaffoldstate = new GlobalKey<ScaffoldState>();



  void _prayerrequest() async {

    try {
      FormData formData = new FormData.fromMap({
        "name": _name.text,
        "email": _email.text,
        "phone":_phone.text,
        "country":_country.text,
        "description":_description.text,
        "file":''
      });
      Response response = await Dio().post("https://livinghopemobile.com/public/api/save-request?token=123ab_@_@AbCD",data: formData);
      print("File upload response: $response");
      _showSnackBarMsg(response.data['message']);
    }
    catch (e) {
      print("expectation Caugch: $e");
    }



  }
  void _showSnackBarMsg(String msg){
    Fluttertoast.showToast(
        msg: "Thanks you!Your Prayer Request has been submitted",
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.CENTER,
        timeInSecForIosWeb: 1,
        backgroundColor: Colors.green,
        textColor: Colors.white,
        fontSize: 16.0
    );

  }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldstate,
      appBar:AppBar(
          iconTheme: IconThemeData(color: Colors.amber[800]),
          backgroundColor: Colors.white,
          title: Text('Send your Prayer Request',style: TextStyle(
            fontSize: 14,
              color: Colors.amber[800]
          ),
          )

      ),
      body: Center(
        child: SingleChildScrollView(
          child: Form(
            key: _formkey,
            child: Column(
              children: [
                Padding(
                  padding: const EdgeInsets.all(10),
                  child: TextFormField(
                    controller: _name,
                    keyboardType: TextInputType.text,
                    decoration: buildInputDecoration(Icons.person,"Full Name"),
                    validator: (String value){
                      if(value.isEmpty)
                      {
                        return 'Please Enter Name';
                      }
                      return null;
                    },
                    onSaved: (String value){

                    },
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.all(10),
                  child: TextFormField(
                    controller: _email,
                    keyboardType: TextInputType.text,
                    decoration:buildInputDecoration(Icons.email,"Email"),
                    validator: (String value){
                      if(value.isEmpty)
                      {
                        return 'Please a Enter';
                      }
                      if(!RegExp("^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+.[a-z]").hasMatch(value)){
                        return 'Please a valid Email';
                      }
                      return null;
                    },
                    onSaved: (String value){

                    },
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.all(10),
                  child: TextFormField(
                    controller: _phone,
                    keyboardType: TextInputType.number,
                    decoration:buildInputDecoration(Icons.phone,"Phone No"),
                    validator: (String value){
                      if(value.isEmpty)
                      {
                        return 'Please enter phone no ';
                      }
                      return null;
                    },
                    onSaved: (String value){

                    },
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.all(10),
                  child: TextFormField(
                    controller: _country,
                    keyboardType: TextInputType.text,
                    decoration: buildInputDecoration(Icons.flag,"Country Name"),
                    validator: (String value){
                      if(value.isEmpty)
                      {
                        return 'Please Enter Country';
                      }
                      return null;
                    },
                    onSaved: (String value){

                    },
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.all(10),
                  child: TextFormField(
                    controller: _description,
                    maxLines: 200,
                    minLines: 3,
                    maxLength: 150,
                    keyboardType: TextInputType.text,
                    decoration: buildInputDecoration(Icons.comment,"Enter description"),
                    validator: (String value){
                      if(value.isEmpty)
                      {
                        return 'Please Enter Description';
                      }
                      return null;
                    },
                    onSaved: (String value){

                    },
                  ),
                ),

            // ignore: deprecated_member_use

                // ignore: deprecated_member_use

                SizedBox(height: 10,),
                SizedBox(
                  width: 200,
                  child: RaisedButton(
                    color: Colors.amber[800],
                    onPressed: (){
                      if(_formkey.currentState.validate())
                      {
                        _prayerrequest();



                      }

                    },

                    textColor:Colors.white,child: Text("Submit"),

                  ),
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

Ard*_*jan 5

您可以使用表单键重置它

_formkey.currentState.reset()
Run Code Online (Sandbox Code Playgroud)