Ronald Morales
Ronald Morales

Reputation: 1

the code after navigator.pushReplacement still executes? (Flutter)

This works. But I don't understand the exact flow.

  class _LoadingPageState extends State<LoadingPage> {

  @override
  Widget build(BuildContext context) {
  return Scaffold(
  body: FutureBuilder(
    future: this.checkGpsYLocation(context),
    builder: (BuildContext context, AsyncSnapshot snapshot) {
      
      print(snapshot.data);
      if ( snapshot.hasData ) {
        return Center(child: Text( snapshot.data ) );
      } else {
        return Center(child: CircularProgressIndicator(strokeWidth: 2 ) );
      }
      
       },
      ),
      );
   }

   Future checkGpsYLocation( BuildContext context ) async {

     // PermisoGPS
     final permisoGPS = await Permission.location.isGranted;
     // GPS está activo
    final gpsActivo  = await Geolocator().isLocationServiceEnabled();

     if ( permisoGPS && gpsActivo ) {
      Navigator.pushReplacement(context, navegarMapaFadeIn(context, MapaPage() ));
      return '';
     } else if ( !permisoGPS ) {
      Navigator.pushReplacement(context, navegarMapaFadeIn(context, AccesoGpsPage() ));  
       return 'Es necesario el permiso de GPS';
     } else {
      return 'Active el GPS';
    }

    }
  }

When Navigator.pushReplacement executes. What happens with rest of code after, like the return 'Es necesario el permiso GPS'. Does it still execute? Or is it ignored by disposing widget (Assuming pushReplacement disposes it)?

Upvotes: 0

Views: 310

Answers (1)

Ward Suleiman
Ward Suleiman

Reputation: 471

Flutter is a normal code after all, statments are executed in sequence one after another, unless of course you have async, loop, recursion etc.

And thats applys also to all Navigator methods. Yes the UI changes but the code flow will continue normaly till it hit a return (or anything else that could end the flow like break, the end of void method....).

Hope that makes clear

Upvotes: 1

Related Questions