2017-09-30 4 views
1

현재 내 플러터 응용 프로그램에 MaterialApp이있어 매우 편리하며 Navigator을 사용하는 것이 좋습니다. 그러나 이제 특정보기/위젯에 대해 더 많은 탐색기를 만드는 방법을 알아 내려고 노력 중입니다. 예를 들어 다른 위젯 /보기가있는 사용자 정의 탭 막대가 있습니다. 이제는 위젯 /보기에 자체 탐색 스택을 갖기를 바랍니다. 그래서 목표는 내 위젯 /보기 내에서 다른 페이지로 이동하는 동안 상단에 탭 표시 줄을 유지하는 것입니다.
이 질문은 거의 Permanent view with navigation bar in Flutter이지만 그 코드에는 아직 MaterialApp이 없습니다. 중첩 MaterialApp 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, 그것이 당신 자신의 버튼이라면, 당신이 사용하는 네비게이터를 확인하십시오. "주"가 아닌 "두 번째"것을 취해야합니다. 발판의 버튼이라면 발판이 "두 번째"네비게이터의 범위에 있는지 확인하십시오. – Mogol