Denis Ramdan
Denis Ramdan

Reputation: 1954

make "Navigator.push" in Future returns

I tried to create a "Future" function that returns the "Navigator.push" class instead of "Widget".

I tried the normal method but it didn't work, the current script is like this:

...

return new FutureBuilder<Map<String, dynamic>>(
                    future: fetchUserQR(new http.Client(),snapshot.data), //scan qr code
                    builder: (context1, snapshot1) {
                      if(snapshot1.hasData) {
                          return Navigator.push( //this the problem
...

my goal is, when I finish scanning the QR code a new page will appear.

hopefully my explanation can be understood.

thank you, best regards.

Upvotes: 1

Views: 2065

Answers (1)

Durdu
Durdu

Reputation: 4849

You need to return a Widget in the futurebuilder's builder method. So return a Container and after this frame push a new page.

return new FutureBuilder<Map<String, dynamic>>(
                    future: fetchUserQR(new http.Client(),snapshot.data), //scan qr code
                    builder: (context1, snapshot1) {
                      if(snapshot1.hasData) {
                        SchedulerBinding.instance.addPostFrameCallback((_) {
                           // Navigator.push....
                        });
                        return Container();
                      }
//...

Upvotes: 3

Related Questions