2017-09-30 1 views
1

Ich habe derzeit eine MaterialApp in meinem Flattern Anwendung, die die Verwendung der Navigator extrem einfach macht, was großartig ist. Aber ich versuche jetzt herauszufinden, wie man mehr Navigatoren für bestimmte Ansichten/Widgets erstellt. Zum Beispiel habe ich eine benutzerdefinierte Tab-Leiste mit einem anderen Widget/Ansicht in. Ich möchte jetzt, dass dieses Widget/View seinen eigenen Navigations-Stack haben. Das Ziel ist also, die Tableiste oben zu halten, während ich in meinem Widget/View zu anderen Seiten navigiere.
Diese Frage ist fast genau das: Permanent view with navigation bar in Flutter aber in diesem Code gibt es keine MaterialApp noch. Nesting MaterialApp s geben funky Ergebnisse und ich glaube nicht, dass das eine Lösung wäre.
enter image description hereSo verwenden Sie mehrere Navigatoren

Irgendwelche Ideen?

Antwort

2

Sie können für jede Seite einen neuen Navigator erstellen. Als Referenzprüfung CupertinoTabView

Oder einfaches Beispiel:

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

Ich weiß eigentlich über den 'TabView' aber das ist nicht das, was ich meinte. Ich hätte eigentlich gerne einen Navigations-Stack für jede Registerkarte in meiner Tableiste, irgendeine Idee, wie das erreicht werden kann? –

+0

Noch eine Frage, wenn ich in meinem Second-Level-Navigator bin (also der, der nicht von meiner 'MaterialApp' erstellt wurde), wie kann ich den Zurück-Button funktionieren lassen? Es schließt nur die App für mich:/ –

+0

@BramVanbilsen, wenn es Ihre eigene Schaltfläche ist, überprüfen Sie, welchen Navigator Sie verwenden. Sie sollten die "zweite" nehmen, nicht "Haupt". Wenn es der Scaffold-Button ist, vergewissern Sie sich, dass das Scaffold im Bereich des zweiten Navigators liegt. – Mogol

Verwandte Themen