首页 > 解决方案 > navigator.pushReplacement 之后的代码还在执行吗?(扑)

问题描述

这行得通。但我不明白确切的流程。

  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';
    }

    }
  }

当 Navigator.pushReplacement 执行时。之后的其余代码会发生什么,例如返回“Es necesario el permiso GPS”。它仍然执行吗?还是被处理小部件忽略(假设 pushReplacement 处理它)?

标签: flutter

解决方案


Flutter毕竟是一个普通的代码,语句一个接一个地按顺序执行,当然除非你有异步、循环、递归等。

这也适用于所有 Navigator 方法。是的,UI 发生了变化,但代码流将继续正常运行,直到它返回(或任何其他可能结束流程的东西,如 break、void 方法的结束......)。

希望清楚


推荐阅读