flutter - 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毕竟是一个普通的代码,语句一个接一个地按顺序执行,当然除非你有异步、循环、递归等。
这也适用于所有 Navigator 方法。是的,UI 发生了变化,但代码流将继续正常运行,直到它返回(或任何其他可能结束流程的东西,如 break、void 方法的结束......)。
希望清楚
推荐阅读
- javascript - 使用 javascript 承诺从 Firebase 云函数中读取 Google 表格
- spring - Spring如何映射自定义pojo列表
- python - 在语法规则中将表达式提取为字符串,而不是将其与其他表达式语法规则匹配 python ply
- python - 连接数组的numpy问题
- javascript - XMLHttpRequest 获取 JSON 文件的内容,但它返回 [object object]
- javascript - Google Scripts - 在 javascript 编辑页面后检索 UrlFetchApp.fetch
- microservices - 微服务调用其他外部服务
- laravel - Laravel 返回关系中特定列的值
- sonarqube - 等待 Azure DevOps 上的声纳 qube 质量门
- python - 使用PIL查找指定区域中的所有像素坐标,内核崩溃