Repository: flutter
Issue: Add Widget that recreates Scaffold's layout properties at the screen-level OR add built-in communication to update a Scaffold's layout properties
Labels: c: new feature,framework,f: material design,c: proposal,P3,team-design,triaged-design

<!-- Thank you for using Flutter!

     If you are looking for support, please check out our documentation
     or consider asking a question on Stack Overflow:
      * https://flutter.dev/
      * https://api.flutter.dev/
      * https://stackoverflow.com/questions/tagged/flutter?sort=frequent

     If you have found a bug or if our documentation doesn't have an answer
     to what you're looking for, then fill our the template below. Please read
     our guide to filing a bug first: https://flutter.dev/docs/resources/bug-reports
-->

## Use case

The `Scaffold` widget's documentation clearly states that it is intended to be used as a top-level container for `MaterialApp`. As such, the Flutter team recommends updating the single `Scaffold` widget when changes are needed for the `AppBar`, `BottomNavigation`, `FloatingActionButton`, and `BottomSheet`. Right away this involves implementing a communication mechanism to be 'called' every-time a new screen is navigated to. I understand why having a single `Scaffold` makes sense as far as calls to 
```
showSnackBar(), 
showBottomSheet(), 
```
etc. However I feel like most developers end up using a `Stack` or some other layout widget when implementing screen-level FABs, AppBars, etc. either to save the trouble of implementing a communication mechanism to the top-level `Scaffold` or because it is a more direct solution. And some developers don't read the documentation altogether and just nest Scaffolds because they simply want the all-in-one layout capabilities it offers.

<!--
     Please tell us the problem you are running into that led to you wanting
     a new feature.

     Is your feature request related to a problem? Please give a clear and
     concise description of what the problem is.

     Describe alternative solutions you've considered. Is there a package
     on pub.dev/flutter that already solves this?
-->

## Proposal

Add a new widget that provides only the layout capabilities of a `Scaffold`, while not including the properties that require a `Scaffold` to be top-level. Something like this could be called a `ScreenFrame` and gives developers a proper way of 'nesting' this layout behaviour without needing to communicate with the app's primary `Scaffold`. 

```
ScreenFrame(
  floatingActionButton:
  appBar:
  bottomSheet:
  bottomBar:
  body:
)
```

The main issue lies in the fact that an app's screens are not inherently constrained to a single set of these properties, yet Flutter adds screen-level properties to the `Scaffold` widget even though it is top-level.

**If for some reason this is not possible or is considered an anti-pattern, I really believe there should be built-in functionality to communicate with the top-level Scaffold's layout widgets. For Example:**

```
Scaffold.of(context).setAppBar()
Scaffold.of(context).setFAB()
```
<!--
     Briefly but precisely describe what you would like Flutter to be able to do.

     Consider attaching images showing what you are imagining.

     Does this have to be provided by Flutter directly, or can it be provided
     by a package on pub.dev/flutter? If so, maybe consider implementing and
     publishing such a package rather than filing a bug.
-->