2017-09-30 66 views
1

我目前在我的撲動應用程序中有一個MaterialApp,這使得使用Navigator非常容易,這非常棒。但是,我現在試圖找出如何爲特定視圖/小部件創建更多導航器。例如,我有一個自定義選項卡欄,其中包含另一個窗口小部件/視圖。現在,我希望該窗口小部件/視圖具有自己的導航堆棧。因此,我的目標是將標籤欄保留在頂部,同時從我的窗口小部件/視圖中導航到其他頁面。
這個問題幾乎就是這個:Permanent view with navigation bar in Flutter但在該代碼中,沒有MaterialApp呢。嵌套0​​s給出時髦的結果,我不相信這將是一個解決方案。
enter image description here如何使用多個導航器

任何想法?

回答

2

您可以爲每個頁面創建新的導航器。作爲參考檢查CupertinoTabView

或者簡單的例子:

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

其實我知道的'TabView'但是這不是我的意思。我實際上想爲我的tabbar中的每個標籤頁都有一個導航堆棧,想知道如何實現? –

+0

還有一個問題,當我在我的第二級導航器(所以不是由我的'MaterialApp'創建的)我怎樣才能讓後退按鈕工作?它只是關閉我的應用程序:/ –

+0

@BramVanbilsen,如果它是你自己的按鈕,請檢查你使用的Navigator。你應該選擇「第二」而不是「主」。如果是腳手架的按鈕,請確保腳手架放置在「第二」導航器的範圍內。 – Mogol