
The main purpose of this PR is to make it so that when you set the initial route and it's a hierarchical route (e.g. `/a/b/c`), it implies multiple pushes, one for each step of the route (so in that case, `/`, `/a`, `/a/b`, and `/a/b/c`, in that order). If any of those routes don't exist, it falls back to '/'. As part of doing that, I: * Changed the default for MaterialApp.initialRoute to honor the actual initial route. * Added a MaterialApp.onUnknownRoute for handling bad routes. * Added a feature to flutter_driver that allows the host test script and the device test app to communicate. * Added a test to make sure `flutter drive --route` works. (Hopefully that will also prove `flutter run --route` works, though this isn't testing the `flutter` tool's side of that. My main concern is over whether the engine side works.) * Fixed `flutter drive` to output the right target file name. * Changed how the stocks app represents its data, so that we can show a page for a stock before we know if it exists. * Made it possible to show a stock page that doesn't exist. It shows a progress indicator if we're loading the data, or else shows a message saying it doesn't exist. * Changed the pathing structure of routes in stocks to work more sanely. * Made search in the stocks app actually work (before it only worked if we happened to accidentally trigger a rebuild). Added a test. * Replaced some custom code in the stocks app with a BackButton. * Added a "color" feature to BackButton to support the stocks use case. * Spaced out the ErrorWidget text a bit more. * Added `RouteSettings.copyWith`, which I ended up not using. * Improved the error messages around routing. While I was in some files I made a few formatting fixes, fixed some code health issues, and also removed `flaky: true` from some devicelab tests that have been stable for a while. Also added some documentation here and there.
Flutter Examples
This directory contains several examples of using Flutter. Each of these is an individual Dart application package.
To run an example, use flutter run
inside that example's directory. See the
getting started guide to install
the flutter
tool.
Tip: To see examples of how to use a specific Flutter framework class,
copy and paste a URL with this format in your browser. Replace foo
with the
classname you are searching for (for example, here's the
query
for examples of the
AppBar
class).
https://github.com/flutter/flutter/search?q=path%3Aexamples+new+foo
Available examples include:
-
Hello, world The hello world app is a basic app that shows the text "hello, world."
-
Flutter gallery The flutter gallery app showcases Flutter's widgets, including its implementation of material design.
-
Platform Channel The platform channel app demonstrates how to connect a Flutter app to platform-specific APIs. For documentation, see https://flutter.io/platform-channels/.
-
Platform Channel Swift The platform channel swift app is the same as platform channel but the iOS version is in Swift and there is no Android version.
-
Flutter View The flutter view app demonstrates how to embed Flutter within an iOS or Android app.
-
Layers The layers vignettes show how to use the various layers in the Flutter framework. For details, see the layers README.
-
Stocks The stocks demo shows how one might structure an application with several screens.