2017-09-30 3 views
1

J'ai actuellement un MaterialApp dans mon application de flutter qui rend l'utilisation du Navigator extrêmement facile, ce qui est génial. Mais, j'essaie maintenant de comprendre comment créer plus de navigateurs pour des vues/widgets particuliers. Par exemple, j'ai une barre d'onglets personnalisée avec un autre widget/vue. Je voudrais maintenant que ce widget/vue ait sa propre pile de navigation. L'objectif est donc de garder la barre d'onglets en haut pendant que je navigue vers d'autres pages à partir de mon widget/vue.
Cette question est presque exactement ceci: Permanent view with navigation bar in Flutter mais dans ce code, il n'y a pas encore MaterialApp. Nesting MaterialApp s donnent des résultats funky et je ne crois pas que ce serait une solution.
enter image description hereComment utiliser plusieurs navigateurs

Des idées?

Répondre

2

Vous pouvez créer un nouveau navigateur pour chaque page. Pour vérifier CupertinoTabView

Ou exemple simple référence:

import 'package:flutter/material.dart'; 

class Home extends StatelessWidget { 
    Navigator _getNavigator(BuildContext context) { 
    return new Navigator(
     onGenerateRoute: (RouteSettings settings) { 
     return new MaterialPageRoute(builder: (context) { 
      return new Center(
      child: new Column(
       mainAxisSize: MainAxisSize.min, 
       children: <Widget>[ 
       new Text(settings.name), 
       new FlatButton(
        onPressed:() => 
         Navigator.pushNamed(context, "${settings.name}/next"), 
        child: new Text('Next'), 
       ), 
       new FlatButton(
        onPressed:() => 
         Navigator.pop(context), 
        child: new Text('Back'), 
       ), 
       ], 
      ), 
     ); 
     }); 
     }, 
    ); 
    } 

    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     body: new Column(
     children: <Widget>[ 
      new Expanded(
      child: _getNavigator(context), 
     ), 
      new Expanded(
      child: _getNavigator(context), 
     ), 
     ], 
    ), 
    ); 
    } 
} 

void main() { 
    runApp(new MaterialApp(
    home: new Home(), 
)); 
} 

Screenshot

+0

je connais au sujet de la 'TabView' mais ce n'est pas ce que je voulais dire. J'aimerais en fait avoir une pile de navigation pour chaque page d'onglet dans ma barre d'onglets, une idée de comment cela peut être accompli? –

+0

Encore une question, quand je suis dans mon navigateur de second niveau (donc celui qui n'est pas créé par mon 'MaterialApp') comment puis-je faire fonctionner le bouton de retour? Il ferme juste l'application pour moi:/ –

+0

@BramVanbilsen, si c'est votre propre bouton, vérifiez quel navigateur vous utilisez. Vous devriez prendre le "second", pas "principal". Si c'est le bouton d'échafaudage, assurez-vous que l'échafaudage est placé dans la portée du "second" navigateur. – Mogol