routing - pages - Flutter: ¿Necesito guardar el widget en onGenerateRoute?
flutter routes with parameters (1)
En el método onGenerateRoute
en MaterialApp
, parece inútil crear widgets cada vez, se cambia la ruta y Widget también perderá contexto. ¿Deberían almacenarse en caché y reutilizar estos widgets new Desktop(sugar)
?
class AppComponentState extends State<AppComponent> implements SugarBuilder {
Sugar sugar;
_getRoute(RouteSettings settings) {
final List<String> path = settings.name.split(''/'');
if (path[0] != '''') return null;
if (path[1] == ''sugar'') {
if (sugar == null) {
return Navigator.pushNamed(context, ''/login'');
} else {
if (path[2] == ''module'') {
return new ModulePage(sugar); // need to cache?
} else {
return new Desktop(sugar); // need to cache?
}
}
}
return null;
}
Widget build(BuildContext context) {
return new MaterialApp(
...
onGenerateRoute: _getRoute,
);
}
}
La creación de nuevos objetos de widgets generalmente debería ser barata. La estructura de widgets de Flutter se ocupará de actualizar el árbol de renderizado cuando tus widgets produzcan objetos de renderizado diferentes. Si tiene mucho estado global para su aplicación, puede almacenarlo en objetos modelo y luego pasarlos a los widgets según sea necesario.