Repository: flutter
Issue: Navigator forces expand size constraint.
Labels: framework,f: routes,P2,team-framework,triaged-framework

I found that I wanted to use the a Step like UX where the user can proceed through a series of steps. The back button on Android should take them to the previous step. This should appear in a dialog.

I found when you use a `Navigator` it forces the contents to max constraints, which means the dialog must fill the screen. I feel that Navigator is a almost has a "Semantic" meaning that it controls the routes and history back stack, and its parent should constrain where the stack/transitions occur. I believe it is a bug for the constraint resolution to come from the `Navigator`.

From what I can tell with the Flutter Inspector the root cause is that `Navigator` returns an `Overlay` widget that contains a `Stack` with `fit: StackFit.expand`. 

I've included a small example below for testing. I'm not setup to build the engine repo, or I would have tested my supposition above. It would be great to get some feedback if this is the problem, and if an optional fit parameter put on Navigator/Overlay so its not forced.

@Hixie I assume you want to know about this for your Navigator work.

## Steps to Reproduce
**Example Code**
```dart
import 'package:flutter/material.dart';


void main() => runApp(new MainWidget());

class MainWidget extends StatelessWidget {
	@override
	Widget build(BuildContext context) {
		return new MaterialApp(
			home: new Scaffold(
				backgroundColor: Colors.lightBlue,
				body: new AlertDialog(
					title: const Text('Help'),
					content: new Navigator(
						initialRoute: 'step:1',
						onGenerateRoute: _onGenerateRoute,
					),
				),
			),
		);
	}

	Route<dynamic> _onGenerateRoute(RouteSettings settings) {
		var parts = settings.name.split(':');
		return new PageRouteBuilder(
			pageBuilder: (_, __, ___) => new StepWidget(int.parse(parts[1], radix: 10)),
			transitionsBuilder: (BuildContext _, Animation<double> animation, Animation<double> secondary, Widget child) {
				child = new SlideTransition(
					position: new Tween<Offset>(
						begin: Offset.zero,
						end: const Offset(-1.0, 0.0),
					).animate(secondary),
					child: child,
				);
				child = new SlideTransition(
					position: new Tween<Offset>(
						begin: const Offset(1.0, 0.0),
						end: Offset.zero,
					).animate(animation),
					child: child,
				);
				return child;
			}
		);
	}
}

class StepWidget extends StatelessWidget {
	final int step;

	StepWidget(this.step);

	@override
	Widget build(BuildContext context) {
		return new Column(
			mainAxisSize: MainAxisSize.min,
			children: <Widget>[
				new Container(
					padding: const EdgeInsets.all(48.0),
					child: new Text('Step $step'),
				),
				new Row(
					mainAxisSize: MainAxisSize.max,
					children: <Widget>[
						new Expanded(
							child: new FlatButton(
								child: const Text('Prev'),
								onPressed: () => Navigator.of(context).maybePop(),
							),
						),
						new Expanded(
							child: new FlatButton(
								child: const Text('Next'),
								onPressed: () => Navigator.of(context).pushNamed('step:${step + 1}'),
							),
						),
					],
				),
			],
		);
	}
}
```

## Flutter Doctor
```
√] Flutter (on Microsoft Windows [Version 10.0.14393], locale en-GB, channel master)
    • Flutter version 0.1.1-pre.33 at C:\Android\flutter
    • Framework revision d401bd78ae (8 days ago), 2018-02-13 01:56:13 -0800
    • Engine revision f5a4a93787
    • Tools Dart version 2.0.0-dev.22.0
    • Engine Dart version 2.0.0-edge.32396138ff733cbe8d9ac32178e6cffccdf80644

[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
    • Android SDK at C:\Android\SDK
    • Android NDK at C:\Android\SDK\ndk-bundle
    • Platform android-27, build-tools 27.0.3
    • ANDROID_HOME = C:\Android\SDK
    • Java binary at: C:\Android\Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)

[√] Android Studio (version 3.0)
    • Android Studio at C:\Android\Studio
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)

[√] IntelliJ IDEA Community Edition (version 2017.3)
    • Flutter plugin version 21.2.3
    • Dart plugin version 173.4548.30

[√] Connected devices
    • Google Nexus 5X, 7 1 0, API 25, 1080x1920 • 192.168.188.101:5555 • android-x86 • Android 7.1.1 (API 25)

• No issues found!
```