• Ian Hickson's avatar
    Deep linking: automatically push the route hiearchy on load. (#10894) · 9adb4a78
    Ian Hickson authored
    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.
    9adb4a78
extension_test.dart 2.21 KB