将表单提交到Firebase后,无法禁用后退按钮

时间:2019-01-10 13:32:56

标签: forms dart flutter back

一旦我填写表格并将其提交到Firebase,代码会将我导航到我的主页,但是一旦我按下Android手机的“后退”按钮,它将发送用户到具有所有先前填写的数据的上一个表格页面。我已经厌倦了使用 WillPopScope 功能禁用我的android手机的后退按钮,但没有响应。

我还使用 willpopscope 创建了一个函数,并在main中调用了该函数,但没有结果。

            @override
              Widget build(BuildContext context) {
                  return new WillPopScope(
                      onWillPop: () async =>false,
                   child: new Scaffold(
                   appBar: new AppBar(
                  title: new Text('Welcome'),
                    actions: <Widget>[
                       _onbackpressed(), //tried disabling the back button by calling this fucntion
                       new FlatButton(
                      child: new Text('Logout',
                          style: new TextStyle(fontSize: 17.0, color: Colors.white)),
                      onPressed: _signOut)
                   ],
                  ),
              body: _showTodoList(),
                floatingActionButton: FloatingActionButton(
                                    onPressed: () {
                               signupPage(context);

                          },
                           tooltip: 'Increment',
                           child: Icon(Icons.add),
                 )

              ),
            );
          }

     //extra funtion to disable the back button-
   _onbackpressed(){
    return new WillPopScope(
      onWillPop: () async =>false, 
       child: new Container(width: 0.0,height: 0.0,),  
       );


     }


         //function used to send the user form to server

                  RaisedButton(
                       elevation: 7.0,
                        child: Text('Upload'),
                        textColor: Colors.white,
                        color: Colors.blue,
                        onPressed: () {
                              final StorageReference firebaseStorageRef =
                              FirebaseStorage.instance.ref().child(Username);
                              final StorageUploadTask task =
                              firebaseStorageRef.putFile(_image);
                              success(context);

                             },
                   ),

        //where success is a fuction 
              success(BuildContext context){
      Navigator.of(context)
     .push(MaterialPageRoute(builder:(context)=>Redirect() ));
 }

1 个答案:

答案 0 :(得分:0)

应该在用户提交表单时弹出窗口,而不是在用户提交表单时按下新屏幕:

success(BuildContext context){
    Navigator.of(context).pop();
} 

其原因是因为您有一堆屏幕。当一个用户用完后,您应该将他发送回所需的位置,而不是将另一个放在顶部,而将已用过的一个留在堆栈上。