Permanent view with navigation bar in Flutter
You can use the same approach here. Parent widget can have two parts: Navigator and PermanentView. By pushing routes you will change only Navigator widget. Demo:
import 'package:flutter/material.dart';class MyApp extends StatefulWidget { @override _MyAppState createState() => new _MyAppState();}class _MyAppState extends State<MyApp> { Route _onRoute(RouteSettings settings) { final str = settings.name.split("/")[1]; final index = int.parse(str, onError: (s) => 0); return new MaterialPageRoute( builder: (BuildContext context) => new Home(index: index)); } @override Widget build(BuildContext context) { return new Column( children: <Widget>[ new Expanded( child: new MaterialApp( title: 'Flutter Demo', onGenerateRoute: _onRoute, ), ), new Container( height: 44.0, color: Colors.blueAccent, child: new Center( child: new Text("permanent view"), ), ) ], ); }}class Home extends StatelessWidget { Home({Key key, this.index}) : super(key: key); final int index; @override Widget build(BuildContext context) => new Scaffold( appBar: new AppBar( title: new Text("View ${index}"), ), body: new Center( child: new Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ new Text("View ${index}"), new FlatButton( onPressed: () => Navigator.of(context).pushNamed("/${index + 1}"), child: new Text("Push")) ], ), ), );}void main() { runApp( new MyApp(), );}